本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 動作的資源和條件
您可以在 AWS Identity and Access Management (IAM) 政策中指定資源和條件,來限制使用者許可的範圍。政策中的每個動作都支援資源和條件類型組合,組合內容取決於動作的行為。
每個 IAM 政策陳述式授予在資源上執行動作的許可。當動作不在具名資源上執行動作,或是當您授予對所有資源執行動作的許可,政策中資源的值是萬用字元 (*
)。對於許多動作,您可以透過指定資源的 Amazon Resource Name (ARN) 或符合多個資源的 ARN 模式,來限制使用者可以修改的資源。
若要依照資源限制許可,請依照 ARN 指定資源。
Lambda 資源 ARN 格式
-
函數 -
arn:aws:lambda:
us-west-2
:123456789012
:function:my-function
-
函數版本 -
arn:aws:lambda:
us-west-2
:123456789012
:function:my-function
:1
-
函數別名 -
arn:aws:lambda:
us-west-2
:123456789012
:function:my-function
:TEST
-
事件來源映射 -
arn:aws:lambda:
us-west-2
:123456789012
:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47
-
層 -
arn:aws:lambda:
us-west-2
:123456789012
:layer:my-layer
-
層版本 -
arn:aws:lambda:
us-west-2
:123456789012
:layer:my-layer
:1
例如,下列原則允許中的使用者叫 AWS 帳戶 123456789012
用美國西部 (奧勒岡) AWS 區域my-function
中名為的函數。
範例 呼叫函數政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ],
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function"
} ] }
此為特例,其中動作識別符 (lambda:InvokeFunction
) 與 API 操作 (Invoke) 不同。對於其他動作,動作識別符就是開頭為 lambda:
的操作名稱。
政策條件
條件是選用的政策元素,會套用額外的邏輯來判斷是否允許動作。除了所有動作皆支援的一般條件之外,Lambda 還會定義您可用來限制某些動作之其他參數值的條件類型。
例如,lambda:Principal
條件讓您可在函數的資源型政策中,限制使用者可授予叫用存取權限的服務或帳號。以下政策會讓使用者可將許可授予 Amazon Simple Notification Service (Amazon SNS) 主題以叫用名為 test
的函數。
範例 管理函數政策許可
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*",
"Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } }
} ] }
條件要求委託人是 Amazon SNS 而不是其他服務或帳戶。資源模式要求函數名稱是 test
並包含版本編號或別名。例如 test:v1
。
如需 Lambda 和其他 AWS 服務的資源和條件的詳細資訊,請參閱服務授權參考中服 AWS 務的動作、資源和條件金鑰。
函數資源名稱
您可以使用 Amazon Resource Name (ARN) 來參考政策陳述式中的 Lambda 函數。函數 ARN 的格式取決於您是參考整個函數 (不合格)、函數版本或別名 (合格)。
進行 Lambda API 呼叫時,使用者可以在參數中傳遞版本 ARN 或別名 ARN,或在GetFunctionFunctionName
參數中設定值,來指定版本或別名。GetFunctionQualifier
Lambda 會比較 IAM 政策中的資源元素與 API 呼叫中傳遞的 FunctionName
和 Qualifier
,從而作出授權決策。如果不符,Lambda 會拒絕該請求。
無論是允許還是拒絕對函數執行操作,都必須在政策陳述式中使用正確的函數 ARN 類型,才能達到預期的結果。例如,如果您的政策引用了不合格的 ARN,Lambda 會接受參考不合格 ARN 的請求,但拒絕參考合格 ARN 的請求。
注意
不能使用萬用字元 (*) 以讓帳戶 ID 相符。如需有關已接受語法的詳細資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策參考。
範例 允許叫用不合格的 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction"
} ] }
如果您的政策引用了特定合格的 ARN,Lambda 會接受參考該 ARN 的請求,但拒絕參考不合格 ARN 或不同的合格 ARN 的請求,例如 myFunction:2
。
範例 允許叫用特定的合格 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1"
} ] }
如果您的政策使用 :*
參考任何合格的 ARN,Lambda 會接受任何合格的 ARN,但拒絕參考不合格 ARN 的請求。
範例 允許叫用任何合格的 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*"
} ] }
如果您的政策使用 *
參考任何 ARN,Lambda 會接受任何合格或不合格的 ARN。
範例 允許叫用任何合格或不合格的 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*"
} ] }
函數動作
您可依據函數、版本或別名 ARN,將在函數上操作的動作限於特定函數,如下表所述。會將不支援資源限制的動作授予給所有資源 (*
)。
函數動作 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
動作 | 資源 | 條件 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數 函式版本 函式別名 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
許可: |
函數 函式版本 函式別名 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteFunctionCodeSigningConfig |
函數 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數 函式別名 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteFunctionEventInvokeConfig |
函數 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteProvisionedConcurrencyConfig |
函式別名 函式版本 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
無 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
函數 |
|
事件來源映射動作
對於事件來源映射,您可將 Delete 和 Update 許可限制至特定事件來源。lambda:FunctionArn
條件可讓您限制使用者可以設定事件來源叫用哪些函數。
對於這些動作,資源是事件來源映射,所以 Lambda 提供一個條件,可讓您根據事件來源映射叫用的函數來限制許可。
事件來源映射動作 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
動作 | 資源 | 條件 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
事件來源映射 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
無 |
圖層動作
圖層動作可讓您限制使用者可以管理或搭配函數使用的圖層。與圖層使用和許可相關的動作在圖層版本上執行作業,而 PublishLayerVersion
在圖層名稱上執行作業。您可以搭配使用萬用字元,來限制使用者可依照名稱使用的 layer。
注意
該GetLayerVersion動作也涵蓋GetLayerVersionByArn。Lambda 不支援 GetLayerVersionByArn
作為 IAM 動作。
圖層動作 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
動作 | 資源 | 條件 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Layer 版本 |
無 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Layer |
無 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
無 |