如何将托管策略附加到无服务器框架中的lambda功能



如何将托管策略附加到lambda函数?

我尝试了:

provider:
  name: aws
  role: arn:aws:iam::aws:policy/AmazonCognitoReadOnly

,但这导致以下错误:

在配置堆栈时发生错误:gadashextractlambdafunction -1检测到的验证错误:值'arn:aws:iam :: aws:policy/amazonCognitoreadly' 在"角色"无法满足约束:成员必须 满足正则表达模式:ARN:AWS:IAM :: D {12}:requ/?[A-ZA-Z_0-9 =,。@-_/] 。

您可以。只需在角色资源的托管托管中提供ARN即可。

Resources:
  RoleName:
    ManagedPolicyArns:
      - "arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess"

用于应用于所有功能的策略:

provider:
  name: aws
  iamManagedPolicies:
    - "arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess"

注意错误 - 它期望role而不是policy

iam策略是定义权限,不能直接附加到lambda函数的文档。创建IAM角色并将托管政策附加到角色上。将角色视为您政策的容器;策略不能直接附加到lambda功能上,但角色可以。您可以自由地依附并分离托管和内联策略。

选项1:使用预定义的策略从AWS控制台中修复此错误:

  • 为您的lambda功能创建一个新的IAM角色。
  • 在创建期间,附加AmazonCognitoReadOnly托管策略。
  • 用新角色的ARN替换role定义中的ARN。

选项2:定义AmazonCognitoreadly策略在serverless.yml中的操作:

这有效地将托管策略转换为内联策略。警告:这是未经测试的。

provider:
  ...
  iamRoleStatements:
    - Effect: Allow
      Action:
        - cognito-identity:Describe*
        - cognito-identity:Get*
        - cognito-identity:List*
        - cognito-idp:Describe*
        - cognito-idp:AdminGetUser
        - cognito-idp:List*
        - cognito-sync:Describe*
        - cognito-sync:Get*
        - cognito-sync:List*
        - iam:ListOpenIdConnectProviders
        - iam:ListRoles
        - sns:ListPlatformApplication
      Resource: *

进一步阅读:

  • AWS文档-AWS lambda权限模型
  • AWS文档 - 创建(IAM)执行角色(教程)

相关内容

  • 没有找到相关文章

最新更新