首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对大量的资源使用AwsCustomResource?

对大量的资源使用AwsCustomResource?
EN

Stack Overflow用户
提问于 2022-01-16 10:04:47
回答 2查看 446关注 0票数 1

我需要一个组件来创建大量的CodeCommit用户。CloudFormation不支持为IAM用户添加公共SSH密钥,因此我必须创建自己的SSH密钥。CDK附带了AwsCustomResource,它完成了创建处理所需CloudFormation事件的Lambda的繁重工作。换句话说,我的代码应该是这样的:

代码语言:javascript
复制
import { User } from 'aws-cdk-lib/aws-iam';
import { AwsCustomResource } from 'aws-cdk-lib/custom-resources';
import { Construct } from 'constructs';

export interface CodeCommitUserProps {
  userName: string;
  emailAddress: string;
  sshPublicKey: string;
}

export class CodeCommitUser extends Construct {
  constructor(scope: Construct, id: string, props: CodeCommitUserProps) {
    super(scope, id);
      
    const user = new User(this, 'codecommit-' + props.userName, {
      userName: 'codecommit-' + props.userName,
      path: '/git/users'
    });
  }

  const custom = new AwsCustomResource(this, ... );
}

现在,如果我调用new CodeCommitUser(...)几百次,我会假设每个用户都会有一个CloudFormation事件Lambda,即使它们都是相同的。如果我需要自定义资源的多个副本,是否有方法重用AwsCustomResource创建的Lambdas?

EN

回答 2

Stack Overflow用户

发布于 2022-01-17 18:48:21

我假设每个用户都会有一个CloudFormation事件Lambda,即使它们都是相同的。

实际上,不是。无论CodeCommitUser实例化多少次,CDK都会创建单个lambda函数。CDK是如何管理这一点的?在CDK下,CDK为AWSCustomResource提供程序使用一个AWSCustomResource(参见github源)。保证将单例函数添加到堆栈“一次而且只有一次,而不管构造被声明多少次为堆栈的一部分”。

如果我需要自定义资源的多个副本,是否有方法重用AwsCustomResource创建的Lambdas?

再一次,重用是自动发生的。您可以通过定义了多个cdk synth-ing的堆栈向自己证明这一点。然后在cdk.out目录中查找输出的CloudFormation模板。模板只定义了一个AWS::Lambda::Function资源(假设应用程序没有在其他地方使用lambdas )。

票数 1
EN

Stack Overflow用户

发布于 2022-01-17 15:23:01

您可以创建自定义资源lambda并将其部署到单独的模板中。然后你可以从你想要的模板中调用它。您可以从单个模板多次调用此资源。您可以一次发送一个用户列表,或者为每个用户创建一个资源(如果您说几百个用户的话,可能不太理想)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70729034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档