मैं एडब्ल्यूएस पर लैम्ब्डा समारोह की तैनाती के लिए सर्वर रहित उपयोग कर रहा हूँ। मेरा लैम्ब्डा फ़ंक्शन ट्रिगर होता है जब ऑब्जेक्ट विशेष बाल्टी में बनाया जाता है और एथेना में रिकॉर्ड सम्मिलित करता है। जब लैम्ब्डा फ़ंक्शन तैनात किया जाता है और लैम्ब्डा ट्रिगर होता है तो यह मुझे निम्न त्रुटि देता है:

botocore.exceptions.ClientError: StartQueryExecution ऑपरेशन को कॉल करते समय एक त्रुटि हुई (AccessDeniedException) SERVICE]-देव-कलेक्टर प्रदर्शन करने के लिए अधिकृत नहीं है: athena:StartQueryExecution on Resource: arn:aws:athena:us-east-1:[MY_ACCOUNT_NO]:workgroup/primary.

मेरा serviceless.yml is

service: MY_SERVICE

plugins:
  - serverless-python-requirements
custom:
  bucket: MY_BUCKET
  pythonRequirements:
      pythonBin: python3

provider:
  name: aws
  runtime: python3.7
  stage: dev
  region: us-east-1
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "s3:*"
      Resource:
        - arn:aws:s3:::${self:custom.bucket}
        - arn:aws:s3:::${self:custom.bucket}/*

    - Effect: "Allow"
      Action:
        - "athena:*"
      Resource:
        - arn:aws:s3:::${self:custom.bucket}
        - arn:aws:s3:::${self:custom.bucket}/*

functions:
  collector:
    handler: collector.run
    events:
      - s3:
          bucket: ${self:custom.bucket}
          event: s3:ObjectCreated:*
          rules:
            - prefix: test_folder/
          existing: true

कोई भी विचार मैं लैम्ब्डा फ़ंक्शन को अनुमति कैसे दे सकता हूं ताकि यह एथेना में रिकॉर्ड सम्मिलित कर सके? अग्रिम में धन्यवाद।

0
Khalid Shah 28 पद 2020, 16:40

2 जवाब

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

मैंने अभी इन वस्तुओं को serverless.yml फ़ाइल में जोड़ा है यानी iamRoleStatements टैग के तहत एथेना और गोंद तक पहुंच प्रदान करें और यह मेरे लिए काम करता है।

iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "s3:*"
      Resource:
        - arn:aws:s3:::${self:custom.bucket}
        - arn:aws:s3:::${self:custom.bucket}/*

    - Effect: "Allow"
      Action:
        - "glue:*"
      Resource:
        - "*"

    - Effect: "Allow"
      Action:
        - "athena:*"
      Resource:
        - "*"
0
Khalid Shah 31 पद 2020, 11:10

लैम्ब्डा निष्पादन भूमिका को एथेना तक पहुंच की अनुमति देनी चाहिए। और आपकी S3 बाल्टी।

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "athena:StartQueryExecution"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    } 
  ]
}
0
Asri Badlah 28 पद 2020, 16:51