サーチ…


備考

ドキュメントからの要約

http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.htmlから

Amazon Simple Storage Serviceはインターネット用のストレージです。これは、開発者にとってウェブスケールのコンピューティングを容易にするように設計されています。

Amazon S3にはシンプルなWebサービスインターフェイスがあり、Web上の任意の場所から任意の時間に任意の量のデータを保存および取得できます。 AmazonがWebサイトのグローバルなネットワークを運営するために使用する高度にスケーラブルで、信頼性が高く、安価で、安価なデータストレージインフラストラクチャを開発者に提供します。このサービスは、規模のメリットを最大限に引き出し、そのメリットを開発者に伝えることを目的としています。

言語とスクリプトのサポート

S3は開発言語ではなく、Webサービス要求をサポートするクラウドプラットフォームです。 Amazonによって出版されているツールやSDKの品揃えがあります。言語SDKは、Webサービス要求、認証、セッション管理、トークンの更新などのタスクを処理することにより、S3への透過的なアクセスを提供します。bash / windows / iospowershellのコマンドラインインターフェイスもあります。

S3 API

S3 WebサービスAPIは、競合するベンダーによってサポートされています。このトピックでは現在APIを直接カバーしていないため、ここの例は、S3 APIを利用する競合するシステムに接続するアプリケーションの構築には役立ちません。

バージョン

2017年3月28日現在、AWS CLIには174のバージョンがあり、 CLIリリースノートにはっきりと記載されています 。 Amazon S3には66のバージョンがあり、その中には新しいリージョンの追加をアナウンスするものと、機能を追加するものがあります。これらはS3リリースノートに記載されています。

これまでのこの「入門」セクションに示されている例に関して、Amazon S3は、次のユースケースの開発者にとって有用です。

  • 高性能で耐久性のあるシステムにファイルを保存またはバックアップします。このため、クラウド以外のアーキテクチャ(Li​​nuxおよびWindowsファイルシステム)からこのタスクをオフロードします。オンプレミスサーバーやEC2インスタンスを使用してS3の耐久性とパフォーマンスレベルを再現するのは費用がかかります。
  • たとえば、複数の同時ユーザーが大きなファイルをダウンロードする必要がある場合など、ネットワーク帯域幅が問題になる場合、データをS3に移動すると、アプリケーションがデータセンターまたはオンプレミスサーバーの帯域幅不足を緩和する手段として使用できます 。これは、大規模なコードリポジトリ、仮想マシンイメージ、ビデオ、またはソフトウェアインストーラを配布する方法です。ユーザーのアップロード時間とユーザーのダウンロード時間を改善できます。 [非常に大規模なユーザーベースのシナリオでは、クラウドフロントなどのコンテンツ配信システムを使用して、ユーザーに近いファイルをキャッシュすることができます。]
  • アプリケーションで大きなファイルを作成または使用する必要があり、ユーザーがアクセスできるようにする方法が必要です。
  • アプリケーションの配布は非常に大きく 、ユーザーと共有する必要があります。
  • あなたは、継続的な配信パイプラインを構築しています。例えば、Amazon S3にあなたのウェブサイトの一部をホスティングしています。

この時点では、次のように例を示していません。

  • この例では、 aws s3 help, do not mention some of the commands covered in help, such as入力するよりも迅速かつ明確aws s3 help, do not mention some of the commands covered in help, such as aws s3のウェブサイトaws s3 help, do not mention some of the commands covered in help, such as
  • ユーザーアクセスを共有または制限する方法。明示的な制限がなければ、例は同じAWSアカウントを共有するユーザーに対してのみ機能します。
  • 暗号化を使ってデータを保護する方法。 AWSでは、EC2に格納されているデータよりもセキュリティレベルが高いとS3が位置していることに注意してください。 AWSセキュリティベストプラクティス、2016年8月、p。 27

セキュリティ

AWSはS3をセキュアなプラットフォームとして表示することを推奨しています。

より厳格なビジネス要件またはコンプライアンス要件がない限り、AWSセキュアなグローバルインフラストラクチャによって提供されるものを超えて、追加の保護層を導入する必要はありません。 同胞。 2

セキュリティガイドでは 、S3に適したAWS認証の使用を推奨しています。 同胞。 p。 27

さらに、S3はサーバー側の暗号化またはクライアント側の暗号化を提供します。クライアント側の暗号化は、AWS Java SDKによって透過的に提供されます。キーをAWSに保存する必要はありません。 同胞。 p。 28

バージョン

バージョン名説明ノート発売日
2016年12月13日のAmazon S3 ロンドン地域を追加 ノート 2016年12月13日

S3にアクセスするためのAWS CLIのインストール

Ubuntu / Debianインスタンスにaws cliをインストールする

sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure

Pythonを使ってaws cliをインストールする

あなたはWindows、OS XとLinuxでaws cliをインストールすることができますピップを使用して

sudo pip install awscli

AWSコマンドラインインターフェイスの設定

このセクションでは、セキュリティ資格やデフォルトの領域など、AWSと対話するときにAWSコマンドラインインターフェイスが使用する設定を構成する方法について説明します。

$ aws configure
AWS Access Key ID [None]: <Your access key >
AWS Secret Access Key [None]: <Your secret key>
Default region name [None]: us-west-2
Default output format [None]: json

AWSのアカウントページからアクセスキーと秘密鍵を取得する

バケットの作成

新しいバケットを作成するには、aws s3 mbコマンドを使用します。バケット名は一意でなければならず、DNSに準拠する必要があります。バケット名には小文字、数字、ハイフン、ピリオドを使用できます

aws s3 mb s3://bucket-name

バケツの取り外し

バケットを削除するには、aws s3 rbコマンドを使用します。デフォルトのバケットは空にする必要があります。

aws s3 rb s3://bucket-name

空でないバケットを削除するには、 - forceオプションを含める必要があります。

aws s3 rb s3://bucket-name --force

バケットの一覧表示

すべてのバケットまたはその内容を表示するには、aws s3 lsコマンドを使用します

aws s3 ls
aws s3 ls s3://bucket-name

次のコマンドは、バケット名/パス内のオブジェクトを一覧表示します

aws s3 ls s3://bucket-name/path

ローカルファイルシステムとS3の間でファイルを同期する

aws s3 sync . s3://my-bucket/path 

現在のディレクトリ内のすべてのファイルをS3にアップロードします。 S3から現在のディレクトリにファイルをダウンロードするには

aws s3 sync s3://my-bucket/path .

AWS CLI S3コマンドリスト

よく使用されるS3 AWS CLIコマンドのリスト

バケットの作成

aws s3 mb s3://bucket-name

バケットを取り外す

aws s3 rb s3://bucket-name

バケット一覧

aws s3 ls

バケット内の内容を一覧表示する

aws s3 ls s3://bucket-name

パス付きリストバケット

aws s3 ls s3://bucket-name/path

ファイルをコピーする

aws s3 cp file.txt s3://my-bucket/ 

ファイルを同期する

aws s3 sync . s3://my-bucket/path

ローカルファイルを削除する

rm ./MyFile1.txt

--deleteオプションなしで同期を試みる - 何も起こらない

aws s3 sync . s3://my-bucket/path

削除と同期 - オブジェクトはバケットから削除されます

aws s3 sync . s3://my-bucket/path --delete

オブジェクトをバケットから削除する

aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt

削除と同期 - ローカルファイルは削除されます

aws s3 sync s3://my-bucket/path . --delete

アクセス頻度の低いストレージクラスとの同期

aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA

現在のディレクトリのMyFile.txtをs3:// my-bucket / pathにコピーします。

aws s3 cp MyFile.txt s3://my-bucket/path/

s3:// my-bucket / pathのすべての.jpgファイルを./MyDirectoryに移動します。

aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive

my-bucketの内容を一覧表示する

aws s3 ls s3://my-bucket

my-bucket内のpathの内容を一覧表示する

aws s3 ls s3://my-bucket/path

s3://my-bucket/path/MyFile.txtを削除

aws s3 rm s3://my-bucket/path/MyFile.txt

s3:// my-bucket / pathとそのすべての内容を削除する

aws s3 rm s3://my-bucket/path --recursive

Javaを使用したHello Worldの例

この例では、 'hello-world'という名前のバケットを作成しようとしていますが、バケツのhello-worldは既にS3のグローバル名前空間の他の誰かによって作成されているため、次の例外がスローされます。一意の名前のバケットを作成することによって、例外を回避するために 'hello-world'を他のものに変更してください。 このように作成された新しいバケットは、AWSコンソールを使用して削除できます

スレッド "main"の例外com.amazonaws.services.s3.model.AmazonS3Exception:要求されたバケット名が使用できません。バケット名前空間は、システムのすべてのユーザーによって共有されます。別の名前を選択してもう一度お試しください。 (サービス:Amazon S3;ステータスコード:409;エラーコード:BucketAlreadyExists;リクエストID:...

           import com.amazonaws.services.s3.AmazonS3;
           import com.amazonaws.services.s3.AmazonS3ClientBuilder;
           import com.amazonaws.services.s3.model.CreateBucketRequest;
           import com.amazonaws.services.s3.model.Bucket;

            /** S3 "hello world" example. */
            public class S3Hello {

                    /** Name of hello-world bucket -- must be globally unique.  The
                     *  bucket namespace is shared by all users of the system.
                     */
                    static final String BUCKET_NAME = "hello-world";

                    /** Creates bucket
                     *  @param args Command line arguments
                     */
                    public static void main(final String[] args) {

                            AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

                            CreateBucketRequest request
                                 = new CreateBucketRequest(BUCKET_NAME);

                            Bucket bucket = s3.createBucket(request);
                            System.out.println("S3 Hello World completed.");
                    }
            }

この例では、次の依存関係が必要です。

PowerShellを使用したHello World

この例では、hello-worldバケットがすでに存在し、S3がグローバル名前空間を使用しているため、エラーが予想されます。

    New-S3Bucket -BucketName "hello-world"

New-S3Bucket:要求されたバケット名は使用できません。バケット名前空間は、システムのすべてのユーザーによって共有されます。別の名前を選択してもう一度お試しください。

hello-worldを一意のものに置き換えると、バケットはエラーなく作成され、次の結果が得られます。

    CreationDate                                      BucketName
    ------------                                      ----------
    3/30/2017 11:43:03 PM                             hello-world-832jklsdJF

この例では、次の依存関係が必要です。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow