বালতি-স্তরের অনুমতি নিয়ে পুটবজেক্ট অপারেশনটি কল করার সময় অ্যাক্সেস প্রাপ্তি অস্বীকৃত


115

কীভাবে কেবল একটি বালতিতে কোনও ব্যবহারকারীর অ্যাক্সেস দেওয়া যায় তার জন্য আমি http://docs.aws.amazon.com/IAM/latest/UserGuide/access_pol नीति_exferences.html#iam-policy- example- s3 এ উদাহরণ অনুসরণ করেছি ।

তারপরে আমি ডাব্লু 3 টোটাল ক্যাশে ওয়ার্ডপ্রেস প্লাগইন ব্যবহার করে কনফিগারটি পরীক্ষা করেছিলাম। পরীক্ষা ব্যর্থ হয়েছিল।

আমি সমস্যাটি ব্যবহার করে পুনরুত্পাদন করার চেষ্টা করেছি

aws s3 cp --acl=public-read --cache-control='max-age=604800, public' ./test.txt s3://my-bucket/

এবং এটি সঙ্গে ব্যর্থ হয়েছে

upload failed: ./test.txt to s3://my-bucket/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied

আমি কেন আমার বালতিতে আপলোড করতে পারি না?

উত্তর:


209

আমার নিজের প্রশ্নের উত্তর দিতে:

উদাহরণ নীতিটি পুতোবজেক্টকে অ্যাক্সেস দিয়েছে, তবে আমাকে পুতওবজেক্টএল অ্যাক্সেসও দিতে হয়েছিল।

আমাকে বদলাতে হয়েছিল

"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"

উদাহরণ থেকে:

"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"

এগুলি দুটি বাক্সটি খোলাখুলি না করে আপনার বালতিটি ক্লায়েন্টদের জন্য পাবলিক অ্যাক্সেসযোগ্য এসিএল সেট করার জন্য কনফিগার করা আছে তাও আপনাকে নিশ্চিত করতে হবে:

এখানে চিত্র বর্ণনা লিখুন


4
ধন্যবাদ! নিশ্চিত নয় কেন অ্যামাজনের নিজস্ব ডকুমেন্টেশন বন্ধ রয়েছে। আপনি "এস 3: অ্যাওর্টমল্টিপার্টআপলোড" অন্তর্ভুক্ত করতে চাইতে পারেন যাতে একটি বাতিল হওয়া আপলোড সঠিকভাবে সাফ হয়ে যায়।
হ্যাশকাট

এস 3 নীতিমালার নমুনাগুলি এখানে ডকস.ওএস.এমাজন
আইএএম /

4
বিটিডব্লিউ এটি আমার পক্ষে কাজ করে না। বোটো 3 ইন্টারঅ্যাকশন, এমনকি এসফুল্যাক্সেস নীতি নিয়েও আমি "পুতোবজেক্টের জন্য অ্যাক্সেসডিনয়েড"
পেয়েছি

4
আমার ক্ষেত্রে এটি ডাব্লুএস ক্লায়ারের সাথে কাজ করছে, তবে এটি বোটোর সাথে ভ্রোকাইন নয়
হার্ডিক

4
আমার এস 3 সম্পূর্ণ অ্যাক্সেস ছিল তবে ব্লক করা নতুন পাবলিক এসিএলগুলি এবং পাবলিক অবজেক্টগুলি আপলোড করছিলাম। ধন্যবাদ!
the_ccalderon

40

আমারও তেমন সমস্যা ছিল। আমি এসিএল স্টাফ ব্যবহার করছিলাম না, তাই আমার দরকার পড়েনি s3:PutObjectAcl

আমার ক্ষেত্রে, আমি করছিলাম ( সার্ভারলেস ফ্রেমওয়ার্ক ওয়াইএমএল):

- Effect: Allow
  Action:
    - s3:PutObject
  Resource: "arn:aws:s3:::MyBucketName"

পরিবর্তে:

- Effect: Allow
  Action:
    - s3:PutObject
  Resource: "arn:aws:s3:::MyBucketName/*"

যা /*বালতি এআরএন এর শেষে যুক্ত করে।

আশাকরি এটা সাহায্য করবে.


4
আমার সাথে * / *
সাইফার

এটি আমার ক্ষেত্রেও ছিল
ভিজ্যুয়ালস্পার্ক

12

যদি এটি অন্য কাউকে সাহায্য করতে পারে তবে আমার ক্ষেত্রে আমি সিএমকে ব্যবহার করছিলাম (এটি ডিফল্ট আওস / এস 3 কী ব্যবহার করে ভাল কাজ করেছে)

আইএএম-এ আমার এনক্রিপশন কী সংজ্ঞাতে যেতে হয়েছিল এবং বোটো 3 এ লগইন করা প্রোগ্রামিক ব্যবহারকারীকে তাদের তালিকার সাথে যুক্ত করতে হয়েছিল যে "অ্যাপ্লিকেশনগুলির মধ্যে থেকে ডেটা এনক্রিপ্ট করতে এবং কেএমএসের সাথে সংহত AWS পরিষেবাদি ব্যবহার করার সময় এই কীটি ব্যবহার করতে পারে"।


এটি আমাকে সাহায্য করেছিল। ধন্যবাদ! অনুমতি হিসাবে একই ত্রুটি, কিন্তু আসলে ছিল এনক্রিপশন।
ভিসেন্টে রোচা


11

আমি কেবলমাত্র একটি প্রাচীরের বিপরীতে মাথা ঠেকিয়ে যাচ্ছিলাম কেবল বড় বড় ফাইলগুলির সাথে কাজ করার জন্য এস 3 আপলোডগুলি পাওয়ার চেষ্টা করছিলাম। প্রথমদিকে আমার ত্রুটি ছিল:

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

তারপরে আমি একটি ছোট ফাইল অনুলিপি করে চেষ্টা করেছি:

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

আমি অবজেক্টগুলি সূক্ষ্মভাবে তালিকাভুক্ত করতে পারি তবে s3:*আমার ভূমিকার নীতিতে আমার অনুমতি থাকা সত্ত্বেও আমি আর কিছুই করতে পারিনি । আমি এখানে নীতিটি পুনরায় কাজ করে শেষ করেছি:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "*"
        }
    ]
}

এখন আমি যে কোনও ফাইল আপলোড করতে সক্ষম। my-bucketআপনার বালতি নাম দিয়ে প্রতিস্থাপন করুন । আমি আশা করি এটি এর মাধ্যমে যে কাউকে সহায়তা করবে।


4
এটি দেয়: প্রয়োজনীয় ক্ষেত্রের অধ্যক্ষ অনুপস্থিত :(
সামিরা কে

4
আমি নিম্নলিখিত ত্রুটিটিও পাচ্ছি: প্রয়োজনীয় ক্ষেত্রের অধ্যক্ষ অনুপস্থিত
করণ শর্মা

আপনি কীভাবে এই এমএমএল করেন
ichimaru

সাবধান: এটি আপনার আইএএম ব্যবহারকারী / ভূমিকাটিকে সমস্ত বালতিতে কীগুলি তালিকাতে অ্যাক্সেস দেবে। যত্ন সহ ব্যবহার করুন; আদর্শ কখনও ব্যবহার এড়ানো "Resource": "*"
ডায়ারিয়ান মুডি

যুক্ত করুন - "অধ্যক্ষ": "*", - নীচে "প্রভাব": অনুপস্থিত প্রয়োজনীয় ক্ষেত্রের সাথে সমস্যাটি সমাধান করতে "অনুমতি দিন"
meck373

7

আমার কেওডাব্লুএস এনক্রিপশন দিয়ে সুরক্ষিত এস 3 বালতিতে আপলোড করার অনুরূপ সমস্যা ছিল। আমার একটি ন্যূনতম নীতি রয়েছে যা নির্দিষ্ট এস 3 কী এর অধীনে অবজেক্টগুলিকে যুক্ত করতে দেয়।

ভূমিকাকে বালতিতে রাখার জন্য আমার নীতিতে নিম্নলিখিত কেএমএস অনুমতিগুলি যুক্ত করা দরকার। (কঠোরভাবে প্রয়োজনের তুলনায় কিছুটা বেশি হতে পারে)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kms:ListKeys",
                "kms:GenerateRandom",
                "kms:ListAliases",
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:HeadBucket"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "kms:ImportKeyMaterial",
                "kms:ListKeyPolicies",
                "kms:ListRetirableGrants",
                "kms:GetKeyPolicy",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:ListResourceTags",
                "kms:ReEncryptFrom",
                "kms:ListGrants",
                "kms:GetParametersForImport",
                "kms:TagResource",
                "kms:Encrypt",
                "kms:GetKeyRotationStatus",
                "kms:GenerateDataKey",
                "kms:ReEncryptTo",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:<MY-REGION>:<MY-ACCOUNT>:key/<MY-KEY-GUID>"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
            <The S3 actions>
            ],
            "Resource": [
                "arn:aws:s3:::<MY-BUCKET-NAME>",
                "arn:aws:s3:::<MY-BUCKET-NAME>/<MY-BUCKET-KEY>/*"
            ]
        }
    ]
}

অসাধারণ. আমি aws/s3কোনও ভূমিকার সাথে সংযুক্ত আইএএম নীতিতে ডিফল্ট পরিচালিত কী থেকে অনুমতিগুলি অনুলিপি করেছিলাম (কেএমএস নীতিতে নয়), এবং এটি ভালভাবে কাজ করে। ক্রিয়াগুলিতে আমি KMS ARNs বিরুদ্ধে প্রয়োজনীয় ছিল: kms:Encrypt, kms:Decrypt, kms:ReEncrypt*, kms:GenerateDataKey*, kms:DescribeKey। তারপরে কেবল স্ট্যান্ডার্ড এস 3 অনুমতি রয়েছে।
z0r

6

আপনি যদি বালতিটির জন্য সর্বজনীন অ্যাক্সেস সেট করে থাকেন এবং যদি এটি এখনও কাজ না করে থাকে তবে বকার নীতি সম্পাদনা করুন এবং নিম্নলিখিতগুলি পেস্ট করুন:

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::yourbucketnamehere",
                "arn:aws:s3:::yourbucketnamehere/*"
            ],
            "Effect": "Allow",
            "Principal": "*"
        }
    ]
}

আমার জন্য পরিশ্রম করে, আমি একটি নতুন এস 3 বালতি তৈরি করেছি, এটি পুরোপুরি সর্বজনীন করে তুলেছি। এটি লেখার যোগ্য put_object, তবে put_object ডাব্লু / এসিএল = বিকল্পটি করার সময় ব্যর্থ হয়। অস্বাভাবিক ?
ডগ এফ

3

আমার করা ভুলের জন্য আমার একই ত্রুটি বার্তা ছিল: আপনি সঠিক এস 3 ইউরি ব্যবহার করেছেন তা নিশ্চিত করুন: s3://my-bucket-name/

(যদি আমার বালতি-নামটি আপনার আউজের মূলে রয়েছে তবে স্পষ্টতই এস 3)

আমি এটিতে জোর দিয়েছি কারণ আপনার ব্রাউজার থেকে এস 3 বালতি পেস্ট করার সময় আপনি এর মতো কিছু পান https://s3.console.aws.amazon.com/s3/buckets/my-bucket-name/?region=my-aws-regiontab=overview

s3://buckets/my-bucket-nameযা আমি উত্থাপন করে তা ব্যবহার করতে ভুল করেছিলাম :

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


2

উপরের একটি পোস্টের মতো, (আমি অ্যাডমিন শংসাপত্রগুলি ব্যতীত) বড় 50 এম ফাইলের সাথে কাজ করতে এস 3 আপলোডগুলি পেতে।

প্রথমদিকে আমার ত্রুটি ছিল:

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

আমি 50M এর উপরে হতে বহুগুণ_সামগ্রী পরিবর্তন করেছি

aws configure set default.s3.multipart_threshold 64MB

এবং আমি পেয়েছি:

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

আমি বালতি পাবলিক অ্যাক্সেস সেটিংস পরীক্ষা করেছিলাম এবং সবই অনুমোদিত ছিল। সুতরাং আমি দেখতে পেয়েছি যে সমস্ত এস 3 বালতির জন্য অ্যাকাউন্ট পর্যায়ে সর্বসাধারণের অ্যাক্সেস ব্লক করা যেতে পারে :

এস 3 অ্যাকাউন্ট স্তরে পাবলিক এসিএল ব্লক করতে পারে


2

আমি একই সমস্যা সম্মুখীন। আমার বালতিটি ব্যক্তিগত ছিল এবং কেএমএস এনক্রিপশন ছিল। ভূমিকাটিতে অতিরিক্ত কেএমএস অনুমতি রেখে আমি এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি। নিম্নলিখিত তালিকাটি খালি ন্যূনতম রোলগুলির প্রয়োজনীয় সেট।

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Sid": "AllowAttachmentBucketWrite",
        "Effect": "Allow",
        "Action": [
            "s3:PutObject",
            "kms:Decrypt",
            "s3:AbortMultipartUpload",
            "kms:Encrypt",
            "kms:GenerateDataKey"
        ],
        "Resource": [
            "arn:aws:s3:::bucket-name/*",
            "arn:aws:kms:kms-key-arn"
        ]
    }
  ]
}

তথ্যসূত্র: https://aws.amazon.com


1

আমার জন্য আমি মেয়াদোত্তীর্ণ অ্যাথ কীগুলি ব্যবহার করছিলাম। উত্পন্ন নতুন এবং বুম।


0

আপনি যদি S3 এনক্রিপশনের জন্য নিজের গ্রাহক দ্বারা পরিচালিত কেএমএস কী নির্দিষ্ট করে থাকেন তবে আপনাকে পতাকাও সরবরাহ করতে হবে --server-side-encryption aws:kms, উদাহরণস্বরূপ:

aws s3api put-object --bucket bucket --key objectKey --body /path/to/file --server-side-encryption aws:kms

আপনি পতাকা যোগ না --server-side-encryption aws:kmsকরলে ক্লিপ একটি AccessDeniedত্রুটি প্রদর্শন করে


0

আমি নীতিগুলি থেকে ল্যাম্বডায় সম্পূর্ণ এস 3 অ্যাক্সেস দিয়ে সমস্যাটি সমাধান করতে সক্ষম হয়েছি। ল্যাম্বদার জন্য একটি নতুন ভূমিকা নিন এবং এতে সম্পূর্ণ এস 3 অ্যাক্সেসের সাথে নীতিটি সংযুক্ত করুন।

আশা করি এটি সাহায্য করবে।


0

ত্রুটি: পুটবজেক্ট ক্রিয়াকলাপটি কল করার সময় একটি ত্রুটি ঘটেছে (অ্যাক্সেসডেইনড): অ্যাক্সেস অস্বীকৃত

আমি পুতুলবজেক্টএলসিপি কোম্পানির নীতি দ্বারা অক্ষম থাকায় অতিরিক্ত আরোগুলি প্যারামিটারটি পেরিয়ে সমস্যার সমাধান করেছি।

s3_client.upload_file ('./ স্থানীয়_file.csv', 'বালতি-নাম', 'পাথ', এক্সট্রাআর্গস = {'সার্ভারসাইড এঙ্কক্রিপশন': 'AES256'} )

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.