AWS S3アクセスIAMユーザの作成とaws cliでのファイルアップロード

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

S3バケット

以下の作業は予めS3にYourBucketNameというbucketを作成しているものとする。


S3アクセス可能とするIAMユーザの作成

IAMユーザ作成後、インラインポリシーを作成。以下は指定のバケット(YourBuketName)に対するS3FullAccessのポリシーとなる。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetAccessPoint",
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:ListAccessPoints",
                "s3:ListJobs",
                "s3:CreateJob",
                "s3:HeadBucket"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::YourBucketName/*",
                "arn:aws:s3:::YourBucketName"
            ]
        }
    ]
}


aws cliのprofile設定

cliが利用するprofileに以下のように記述する。YourProfileNameは自由に識別し易い文字列を設定しておけばよい。

AccessKeyとSecretはIAMユーザ作成時に取得しておいたものを記載する。

~/.aws/config

[YourProfileName]
region=ap-northeast-1 #指定のリージョン

~/.aws/config

[YourProfileName]
aws_access_key_id=YourAccessKey
aws_secret_access_key=YourSecret


S3へのファイルアップロード

アクセスコントロールを公開にしてアップロード。--profileで使用するprofileを変更できる。

$ aws s3 cp fromFilePath s3://YourBuketName/directory/ --acl public-read --profile=YourProfileName

権限のないバケットのアップロードはエラーがでる。

$ aws s3 cp fromFilePath s3://NotPermissionBucket/directory/ --acl public-read --profile=YourProfileName
upload failed: fromFilePath to s3://NotPermissionBucket/directory/ An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

バケットが存在しない場合。

$ aws s3 cp fromFilePath s3://NotPermissionBucket/directory/ --acl public-read --profile=YourProfileName
An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist