Amazon AWS S3を社外に貸し出す設定
社外の方がさくらサーバのデータをAWSのS3に取得したいとかで、
でもあまり詳しくないのでウチの会社のS3に相乗りさせてもらえないかと問い合わせあり。
前職の詳しい人に聞いてみると
「S3の特定のバケットだけアクセスできるユーザを(IAMで)作って渡せばいいんじゃないでしょうか。
S3の準備ができ次第、バックアップの取り方はこちらから伝えておきますよ。」
とのこと。
いやあ、ありがたいですねえ。
でも「なるほど、わからん」だったので少しお勉強。
1)S3とは、
「Amazon Simple Storage Service」の略。
2)「バケット」とは、
Bucket。
要はデータ保存領域。
1バイトから5Tバイトまでのオブジェクト。逆に言うと0バイトファイルは作れないってことか。
格納オブジェクト数に制限なし。
ここまではhttp://aws.amazon.com/jp/s3/
3)アクセスユーザ制限は、
バケット単位、オブジェクト単位で可能。
http://aws.amazon.com/jp/s3/faqs/#How_can_I_control_access_to_my_data_stored_on_Amazon_S3
4)IAMとは、
「Identity and Access Management」
「アイアム」と発音するのがUS流儀らしい。
AWS Management Consoleから管理可能(昔はできなかったらしい)
AWSでユーザーの作成・管理が可能。
AWS外で管理されるユーザーにAWSリソースへのアクセスを許可できる。
座学レベルはざっとこんなところ。
実際の設定等は以下が詳しいので省略します。
IAMと私 〜IAMのAWS Management Consoleサポートバンザイ〜
最終的に作成したIAMのポリシーは以下の通り。
AmazonS3ListAllBuckets_Access{
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
}
]
}
AmazonS3ListBucket_(bucket_name)_Access
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::(bucket_name)"
}
]
}
AmazonS3FullForBucket_(bucket_name)_Access
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject*",
"s3:PutObject*",
"s3:DeleteObject*",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": "arn:aws:s3:::(bucket_name)/*"
}
]
}