本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授予 Lambda 函數對 AWS 服務 的存取權
當您使用 AWS 服務來叫用函式時,您會在以資源為基礎之政策的陳述式中授予許可。您可以將陳述式套用至整個函數,或將陳述式限制在單一版本或別名。
注意
當您透過Lambda 主控台將觸發新增至函數時,主控台會更新函數的以資源為基礎的政策來允許服務進行叫用。若要將許可授予無法在 Lambda 主控台中使用的其他帳戶或服務,您可使用 AWS CLI。
使用 add-permissionmy-function
之函數的許可。
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns \ --principal sns.amazonaws.com \ --output text
您應該會看到下列輸出:
{"Sid":"sns","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2:123456789012:function:my-function"}
這可讓 Amazon SNS 呼叫函數的 Invoke API 動作,但不會限制會觸發調用的 Amazon SNS 主題。若要確保您的函式只會被特定的資源叫用,請使用 source-arn
選項來指定資源的 Amazon Resource Name (ARN)。下列命令僅允許 Amazon SNS 為名為 my-topic
的主題訂閱叫用函數。
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns-my-topic \ --principal sns.amazonaws.com \ --source-arn arn:aws:sns:
us-east-2:123456789012:my-topic
有些服務可在不同的帳戶中叫用函式。如果您指定的來源 ARN 中有帳戶 ID,您可以放心。然而,對於 Amazon S3,來源是一種儲存貯體,其 ARN 沒有帳戶 ID。您可以刪除該儲存貯體,且其他帳戶可使用相同的名稱建立儲存貯體。透過您的帳戶 ID 使用 source-account
選項來確保只有帳戶中的資源可叫用該函式。
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id s3-account \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::
amzn-s3-demo-bucket
\ --source-account123456789012