amazon-web-services - 是否可以向使用 AWS Amplify 预置的 lambda PostAuthenticate 函数授予额外权限?

标签 amazon-web-services aws-lambda aws-amplify aws-amplify-cli

TL;博士: Can Amplify CloudFormation 模板用于身份验证后功能配置已手动更改以授予权限(例如)IoT attachPrincipalPolicy ?

我正在使用 AWS Amplify 和 amplify CLI 来设置一个新项目。总体而言,Amplify 使事情变得非常简单,但我仍然坚持这种感觉,即在通过 Amplify 控制的项目变得困难或不可能完成之前,您只能使用 Amplify “到目前为止”。

我感兴趣的用例与设置 PubSub 有关。物联网 - the AWS instructions cover how to get this working但我认为这更像是“概念证明”而不是“你应该在任何接近生产的东西中使用的东西”——它涉及手动调用 aws iot attach-principal-policy --policy-name 'myIoTPolicy' --principal '<YOUR_COGNITO_IDENTITY_ID>'每个 Cognito 身份。

相反,我想做的是使用 Post Authentication lambda 函数/事件 Hook 来调用 attachPrincipalPolicy当用户登录网站时(可能首先检查政策是否已附加!)。

也许显然这不“只是工作”,我测试过

var iot = new AWS.Iot();

  var params = {
    policyName: 'myIoTPolicy', /* required */
    principal: 'XYZ123XYZ123' /* required */
  };

  try {
    iot.attachPrincipalPolicy(params, function (err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else console.log(data);           // successful response

      callback(null, event);
    });
  } catch (e) {
    console.log(e);           // successful response
  }

并以类似的错误结束
AccessDeniedException: User: arn:aws:sts::123123123123123:assumed-role/project82382PostAuthentication-master/project82382PostAuthentication-master is not authorized to perform: iot:AttachPrincipalPolicy on resource: XYZ123XYZ123
问题的核心是,当/如果我使用 Amplify CLI 修改项目时,我如何以一种不会中断的方式授予此 lambda 函数权限?例如,我理论上可以更改 project82382PostAuthentication-cloudformation-template.json并添加某种配置以允许执行 iot:AttachPrincipalPolicy ,但是这将被删除我想如果/当我更改某些内容的配置导致 Amplify CLI 重新生成 CloudFormation 模板时?

最佳答案

虽然这是一个相当手动的过程,去 ./amplify/backend/function/your-function-name/your-function-name-cloud-formation-template.json 并找到“lambdaexecutionpolicy” -> “Properties” -> “政策文件”->“声明”。这是一系列的政策。只需使用您需要的任何内容将另一个对象添加到数组中。例如,

{
  "Effect": "Allow",
  "Action": [
    "sns:*"
  ],
  "Resource": "*"
}
然后运行 ​​amplify status您应该会看到 lambda 的待处理更新。运行 amplify push这些更改将部署到云中。

关于amazon-web-services - 是否可以向使用 AWS Amplify 预置的 lambda PostAuthenticate 函数授予额外权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59124726/

相关文章:

amazon-web-services - “无法从空字符串创建路径”使用 S3 路径在配置单元中出现 'CREATE TABLE AS' 错误

java - 根据 GSI 索引和范围键从 Dynamo 数据库获取所有列

amazon-web-services - 即使在成功执行 `create-invalidation` 命令后,AWS CloudFront 也没有失效

amazon-web-services - AWS Lambda 可以接收入站 TCP 连接吗?

amazon-web-services - 如何在 aws-amplify 中的列表查询中的字段上按日期(createdAt)排序?

amazon-web-services - 我们如何合并两个或多个 aws cloudformation 模板

node.js - 试图理解作为 api 网关 websockets 连接逻辑一部分的 lambda 函数

amazon-web-services - Cloudformation 宏使用跨区域 Lambda

aws-lambda - 在 AWS Amplify 上使用 Next.js 和 SSR,环境变量不会被传递到自动创建的 Lambda

amazon-web-services - 配置 Cloudflare 以指向 AWS Amplify