我嘗試使用容器鏡像創建 AWS Lambda 函數,但是我收到了 Amazon Elastic Container Registry (Amazon ECR) 許可錯誤。
簡短描述
若要從容器映像建立 Lambda 函數,建立函數和 Amazon ECR 儲存庫的使用者或角色必須具有允許存取的政策。
**注意:**在您建立 Lambda 函數之前,請先建立 Lambda 容器映像檔。然後,將鏡像上傳到 Amazon ECR 儲存庫。
如需詳細資訊,請參閱將 Lambda 函數部署為容器鏡像。
解決方案
請依照下列步驟設定私人儲存庫原則陳述式。
**注意:**最佳做法是僅針對執行工作所需的權限授與最低權限。如需詳細資訊,請參閱應用最低權限權限。
1.從同一個 AWS 帳戶中的 Amazon ECR 鏡像 URI 建立 Lambda 函數
在下列範例中,Amazon ECR 儲存庫許可必須允許對 Lambda 服務執行 ecr:BatchGetImage 和 ecr:GetDownloadUrlForLayer API 動作。
Amazon ECR 儲存庫政策範例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LambdaECRImageRetrievalPolicy",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
}
2.在跨帳戶中從 Amazon ECR 鏡像 URI 創建一個 Lambda 函數
在下列範例中,AWS 帳戶** 111111111111** 和 Amazon ECR 儲存庫中建立的 Lambda 函數位於 AWS 帳戶** 222222222222中**。
建立或更新[ Lambda 函數的使用者或角色在 ECR 存放庫上必須具有 ecr:BatchGetImage和 ecr:GetDownloadUrlForLayer](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ecr/get-download-url-for-layer.html)權限。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ECR Repository Access Permissions",
"Effect": "Allow",
"Action": [
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage"
],
"Resource": "arn:aws:ecr:us-east-1:222222222222:repository/hello-repository"
}
]
}
在下列範例中,CrossAccountPermission陳述式允許 AWS 帳戶** 111111111111** 建立和更新使用來自 Amazon ECR 儲存庫鏡像的 Lambda 函數。
範例 Amazon ECR 儲存庫跨帳戶政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CrossAccountPermission",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
},
{
"Sid": "LambdaECRImageCrossAccountRetrievalPolicy",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Condition": {
"StringLike": {
"aws:sourceARN": "arn:aws:lambda:us-east-1:111111111111:function:*"
}
}
}
]
}
如果長時間沒有叫用函數,Lambda 最終會將函數的狀態設定為非作用中。
注意:若要讓 Lambda 帳戶 111111111111 擷取容器鏡像,Lambda 必須提供LambdaECRImageCrossAccountRetrievalPolicy聲明。
如需詳細資訊,請參閱 Amazon ECR 跨帳戶許可。
相關資訊
為 AWS Lambda 引入跨帳戶 Amazon ECR 存取權
如何疑難排解 Lambda 的權限問題?