मैं एक खाते में एक S3 बाल्टी से दूसरे खाते में एक S3 बाल्टी में डेटा कॉपी करने के लिए डेटासिंक का उपयोग करना चाहता हूं। मैं इस आधिकारिक एडब्ल्यूएस डेटासिंक ब्लॉग का अनुसरण कर रहा हूं: https://aws.amazon.com/blogs/storage/how-to-use-aws-datasync-to-migrate-data-between-amazon-s3-buckets/< /a> दूसरे खंड में "खातों में वस्तुओं की प्रतिलिपि बनाना"।

मैंने स्रोत और गंतव्य बकेट सेट किए हैं, और "एक नई IAM भूमिका बनाएं और स्रोत S3 बकेट स्थान के लिए एक नई IAM नीति संलग्न करें" और "IAM भूमिका के लिए निम्नलिखित विश्वास संबंध जोड़ें" के प्रारंभिक चरण किए हैं (आप मैं उन स्ट्रिंग्स को उद्धरणों में खोज कर देख सकता हूं कि ब्लॉग में मेरा क्या मतलब है) लेकिन अब मैं उलझन में हूं कि किस खाते का उपयोग "स्रोत S3 बाल्टी नीति खोलें और IAM भूमिका के लिए अनुमति देने के लिए निम्नलिखित नीति लागू करें। ऑब्जेक्ट्स" और एडब्ल्यूएस सीएलआई कमांड "aws sts get-caller-identity" चलाने के लिए किस खाते का उपयोग करना है और उसके बाद सीधे "aws datasync create-location-s3" कमांड। क्या मैं उन्हें स्रोत या गंतव्य खातों पर कर रहा हूं? ब्लॉग उन विशिष्ट चरणों पर थोड़ा भ्रमित और अस्पष्ट है और मुझे कहीं भी एक आसान मार्गदर्शिका नहीं मिल रही है।

धन्यवाद

3
Alex Kerr 17 अगस्त 2021, 20:30

3 जवाब

सबसे बढ़िया उत्तर

स्रोत S3 बकेट नीति स्रोत S3 बकेट से जुड़ी हुई है, इसलिए आपको इसे संपादित करने के लिए स्रोत खाते में लॉग इन करना होगा।

अगला कदम सीएलआई से करना होगा। शब्दांकन थोड़ा अस्पष्ट है लेकिन मुख्य वाक्यांश है "सुनिश्चित करें कि आप उसी IAM पहचान का उपयोग कर रहे हैं जिसे आपने पिछले चरण में बनाई गई स्रोत S3 बाल्टी नीति में निर्दिष्ट किया था।" उदाहरण के लिए S3 बकेट नीति में संदर्भित IAM पहचान arn:aws:iam::DEST-ACCOUNT-ID:role/DEST-ACCOUNT-USER है, इसलिए आपको CLI चरणों के लिए गंतव्य खाते में प्रमाणित होने की आवश्यकता है। aws sts get-caller-identity कमांड केवल कमांड को निष्पादित करने के लिए उपयोग की गई पहचान लौटाता है, इसलिए यह पुष्टि करने के लिए है कि आप डेटासिंक स्थान सेट करने के लिए कड़ाई से आवश्यक होने के बजाय अपेक्षित पहचान का उपयोग कर रहे हैं।

ट्यूटोरियल में इसका स्पष्ट रूप से उल्लेख नहीं किया गया है, लेकिन निश्चित रूप से गंतव्य खाते में उपयोगकर्ता को डेटासिंक स्थान और कार्य बनाने के लिए उपयुक्त IAM अनुमतियों की आवश्यकता है।

इसे इस तरह से सोचने में मदद मिल सकती है: आपको गंतव्य खाते में एक भूमिका को स्रोत खाते में बकेट तक पहुंचने की अनुमति देनी होगी, फिर आप गंतव्य खाते में डेटासिंक स्थान और कार्य सेट कर रहे हैं। इसलिए डेटासिंक कॉन्फिगरेशन से संबंधित कुछ भी डेस्टिनेशन अकाउंट में होना चाहिए।

1
jscott 18 अगस्त 2021, 00:17

काम नहीं करता! - मदद! -

गंतव्य भूमिका

  DESTINATION-ROLE:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Action:
              - sts:AssumeRole
            Effect: Allow
            Principal:
              Service:
                - datasync.amazonaws.com
      Path: '/'
      RoleName: DESTINATION-ROLE
  DESTINATION-POLICY:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: DESTINATION-POLICY
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Action:
              - s3:GetBucketLocation
              - s3:ListBucket
              - s3:ListBucketMultipartUploads
            Effect: Allow
            Resource: arn:aws:s3:::SOURCEBUCKET
          - Action:
              - s3:AbortMultipartUpload
              - s3:DeleteObject
              - s3:GetObject
              - s3:ListMultipartUploadParts
              - s3:PutObjectTagging
              - s3:GetObjectTagging
              - s3:PutObject
            Effect: Allow
            Resource: arn:aws:s3:::SOURCEBUCKET/*
      Roles:
        - Ref: DESTINATION-ROLE

स्रोत S3 नीति

Version: '2012-10-17'
Statement:
  - Sid: BucketPolicyForDataSync
    Effect: Allow
    Principal:
      AWS:
        - arn:aws:iam::DEST-ACCOUNT-ID:role/DESTINATION-ROLE
    Action:
      - s3:GetBucketLocation
      - s3:ListBucket
      - s3:ListBucketMultipartUploads
      - s3:AbortMultipartUpload
      - s3:DeleteObject
      - s3:GetObject
      - s3:ListMultipartUploadParts
      - s3:PutObject
      - s3:GetObjectTagging
      - s3:PutObjectTagging
    Resource:
      - arn:aws:s3:::SOURCEBUCKET
      - arn:aws:s3:::SOURCEBUCKET/*

सीएलआई आमंत्रण

aws datasync create-location-s3                 \
    --s3-bucket-arn arn:aws:s3:::SOURCEBUCKET     \
    --s3-config '
        {
            "BucketAccessRoleArn":
                "arn:aws:iam::DEST-ACCOUNT-ID:role/DESTINATION-ROLE"
        }
    '

0
gph 3 सितंबर 2021, 15:05

मेरे पास एक ही समस्या थी और मुझे एक ही त्रुटि संदेश प्राप्त हो रहा था, मुझे एक फिक्स मिला

"CreateLocationS3 ऑपरेशन को कॉल करते समय एक त्रुटि हुई (InvalidRequestException): कृपया us-east-2 क्षेत्र में एक बकेट प्रदान करें जहां DataSync वर्तमान में उपयोग किया जाता है"।

आपको --region ध्वज को पास करना होगा और उस क्षेत्र को रखना होगा जिसमें स्रोत बकेट स्थित है। तो स्रोत बकेट व्यू को देखें और क्षेत्र प्राप्त करें।

0
bad_coder 5 सितंबर 2021, 00:29