LoginSignup
0
0

[Amplify]boto3でS3のオブジェクトを操作するときの権限を付与する。

Posted at

はじめに

Pythonでboto3を使用してS3バケットのオブジェクトを操作するときに、エラーにハマったので、メモとして残しておきます。

エラーの内容

boto3を使用して、S3のオブジェクトを操作しようとしたときに、以下のエラーが発生した。

An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied"

このエラーはS3のオブジェクトを操作するにあたって、権限が足りていないことが原因です。
しかし、以下のように権限は付与されていました。

custom-policies.json
{
 "Version": "2012-10-17",
 "Statement": [
    {
        "Action": [
            "s3:GetObject",
            "s3:ListObject"
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::bucket-name/folderA/folderB",
            "arn:aws:s3:::bucket-name/folderC/folderD",
            "arn:aws:s3:::bucket-name/folderE/folderF"
        ],
        "Effect": "Allow"
    }
 ]
}

ここでなぜ権限が付与されていないのかで詰まりました。

解決方法

以下のサイトに解決方法が書いてありました。

ポリシーは以下のように、「/」をつけないARNと、「/」をつけるARNを記述しなければいけないみたいです。

custom-policies.json
{
 "Version": "2012-10-17",
 "Statement": [
    {
        "Action": [
            "s3:GetObject",
            "s3:ListObject"
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::bucket-name/folderA/folderB",
            "arn:aws:s3:::bucket-name/folderC/folderD",
            "arn:aws:s3:::bucket-name/folderE/folderF",
            "arn:aws:s3:::bucket-name/folderA/folderB/*",
            "arn:aws:s3:::bucket-name/folderC/folderD/*",
            "arn:aws:s3:::bucket-name/folderE/folderF/*"
        ],
        "Effect": "Allow"
    }
 ]
}

最後に

他にも色々な記事を書いているので、よければ読んでいってください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0