amazon-s3 チュートリアル
amazon-s3を使い始める
サーチ…
備考
ドキュメントからの要約
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 / iosとpowershellのコマンドラインインターフェイスもあります。
S3 API
S3 WebサービスAPIは、競合するベンダーによってサポートされています。このトピックでは現在APIを直接カバーしていないため、ここの例は、S3 APIを利用する競合するシステムに接続するアプリケーションの構築には役立ちません。
バージョン
2017年3月28日現在、AWS CLIには174のバージョンがあり、 CLIリリースノートにはっきりと記載されています 。 Amazon S3には66のバージョンがあり、その中には新しいリージョンの追加をアナウンスするものと、機能を追加するものがあります。これらはS3リリースノートに記載されています。
例
これまでのこの「入門」セクションに示されている例に関して、Amazon S3は、次のユースケースの開発者にとって有用です。
- 高性能で耐久性のあるシステムにファイルを保存またはバックアップします。このため、クラウド以外のアーキテクチャ(Linuxおよび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.");
}
}
この例では、次の依存関係が必要です。
- コンソール操作でインストールされたJava
- AWS Java SDKがインストールされています。 https://aws.amazon.com/sdk-for-java/
- ホームディレクトリの.awsに設定された資格情報ファイルの
credentials
https://aws.amazon.com/developers/getting-started/java/ - S3の管理者権限または「バケット作成権限」を持つ資格情報http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets
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
この例では、次の依存関係が必要です。
パワーシェル。 http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.htmlを参照してください。
資格情報。これらは、AWSコンソールを使用して作成できます。 PowerShellを使用してこれらを管理するには、いくつかのオプションがあります。以下はセットアップの簡単な例です。 http://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.htmlを参照してください。
PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7LAJD8A -SecretKey "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEjw9JFKS3" -StoreAs default