aws云开发工具包核心库

aws-cdk.core的Python项目详细描述


AWS云开发工具包核心库


稳定性:稳定


该库包括aws云开发工具包(aws cdk)的基本构建块。它定义了在 AWS构造库。

参见aws cdk开发人员 指南 此库的大部分功能的信息。剩下的部分 自述文件仅涵盖《开发人员指南》中尚未涵盖的主题。

持续时间

为了使时间间隔的规范明确无误,一个名为 duration在整个aws构造库中由所有构造使用 以一个时间间隔作为参数(不管是超时,还是 价格,或其他的)。

duration的实例是通过使用一个静态工厂 方法:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes

秘密

为了避免意外地将机密存储为纯文本,我们使用secretvalue键入 代表秘密。任何具有应该是秘密的值的构造(例如 密码或访问密钥)将采用secretvalue类型的参数

最佳实践是将机密存储在aws secret manager中,并使用secretvalue.secretsmanager引用它们:

constsecret=SecretValue.secretsManager('secretId',{jsonField:'password'// optional: key of a JSON field to retrieve (defaults to all content),versionId:'id'// optional: id of the version (default AWSCURRENT)versionStage:'stage'// optional: version stage name (default AWSCURRENT)});

使用aws secrets manager是在cdk应用程序中引用机密的推荐方法。 secretvalue还支持以下机密源:

  • secretvalue.plain text(secret):在应用程序和生成的模板中以纯文本形式存储机密(不推荐)。
  • secretvalue.ssmsecure(param,version):指存储在ssm参数存储中作为securestring的机密。
  • secretvalue.cfn参数(param):指通过cloudformation参数传递的机密(必须有noecho:true)。
  • secretvalue.cfndynamicreference(dynref):指由云信息动态引用(由ssmsecuresecretsmanager使用)描述的机密。

ARN操作

有时候你需要把亚马逊的资源名称拼凑起来或者分离出来 (ARNs)函数stack.formatarn()和stack.parsearn()存在于 这个目的。

formatarn()可用于从组件构建ARN。它将自动 使用调用堆栈的区域和帐户:

// Builds "arn:<PARTITION>:lambda:<REGION>:<ACCOUNT>:function:MyFunction"stack.formatArn({service:'lambda',resource:'function',sep:':',resourceName:'MyFunction'});

parsearn()可用于从ARN获取单个组件。parsearn() 将正确处理文本ARN和部署时间值(令牌)。 但是在部署时间值的情况下,请注意结果将是另一个 无法在CDK应用程序中检查的部署时间值。

// Extracts the function name out of an AWS Lambda Function ARNconstarnComponents=stack.parseArn(arn,':');constfunctionName=arnComponents.resourceName;

注意,根据服务的不同,资源分隔符可以是 /,资源名称可以是第6个或第7个 ARN中的部件。使用这些函数时,您需要知道 您正在处理的ARN的格式。

有关aws中使用的arn格式的详细列表,请参见aws arns和 名称空间 在AWS通用参考资料中。

依赖关系

构造依赖关系

有时aws资源依赖于其他资源,并且创建一个 必须先完成资源,然后才能启动下一个资源。

一般来说,cloudformation将正确地推断依赖关系基于所使用的属性值的资源之间。在这种情况下 它没有,aws构造库将为 你,

如果需要添加不自动推断的排序依赖项, 通过使用 constructa.node.addDependency(constructb)。这将添加依赖项 constructa范围内的所有资源与所有资源之间的关系 constructb范围内的资源

如果希望单个对象表示一组 必须在同一范围内,您可以使用具体可靠的。这个 下面创建一个表示对两个 construts,constructbconstructc

// Declare the dependable objectconstbAndC=newConcreteDependable();bAndC.add(constructB);bAndC.add(constructC);// Take the dependencyconstructA.node.addDependency(bAndC);

堆栈依赖项

两个不同的堆栈实例可以相互依赖。这个 当一个堆栈中的资源被另一个堆栈引用时发生。在 在这种情况下,cdk记录资源的跨堆栈引用, 自动生成正确的cloudformation原语,并添加 两个堆栈之间的依赖关系。也可以手动添加依赖项 通过使用stacka.addDependency(stackb)方法在两个堆栈之间。

堆栈依赖项具有以下含义:

  • 不允许循环依赖项,因此如果stacka使用的资源来自 stackb,反向操作不再可能。
  • cdk特别处理它们之间具有依赖关系的堆栈。 工具包:
    • 如果stacka依赖于stackb,运行cdk deploy stacka也将 自动展开stackb
    • stackb的部署将在部署之前执行。stacka部署。

AWS云层特征

cdk堆栈将合成aws云信息模板。本节 说明此模块如何允许用户访问低层云信息 需要时提供功能。

堆栈输出

cloudformation堆栈输出并使用 cfnoutput类:

newCfnOutput(this,'OutputName',{value: bucket.bucketName,description:'The name of an S3 bucket',// OptionalexportName:'Global.BucketName',// Registers a CloudFormation export});

参数

云信息模板支持使用参数 自定义模板。它们允许cloudformation用户将自定义值输入到 每次创建或更新堆栈时的模板。而cdk设计 哲学倾向于使用构建时参数化,用户可能需要使用 在许多情况下(例如,当迁移现有的 堆叠到AWS CDK)。

可以使用cfn参数将模板参数添加到堆栈中类:

newCfnParameter(this,'MyParameter',{type:'Number',default:1337,// See the API reference for more configuration props});

然后可以使用value方法之一获取参数值。 由于参数仅在部署时解析,因此获得的值为 实际值的占位符标记(token.isunresolved()将返回true 对于那些:

constparam=newCfnParameter(this,'ParameterName',{/* config */});// If the parameter is a Stringparam.valueAsString;// If the parameter is a Numberparam.valueAsNumber;// If the parameter is a Listparam.valueAsList;

伪参数

cloudformation支持许多伪参数, 在部署时解析为有用值。假云形成 可以从aws类的静态成员获取参数。

通常建议从作用域的堆栈访问伪参数 相反,它保证生成的值符合指定的 堆栈,这在跨堆栈共享资源的情况下非常重要:

// "this" is the current constructconststack=Stack.of(this);stack.account;// Returns the AWS::AccountId for this stack (or the literal value if known)stack.region;// Returns the AWS::Region for this stack (or the literal value if known)stack.partition;

资源选项

云信息资源还可以指定="https://docs.aws.amazon.com/awscloudformation/latest/userguide/aws-product-attribute-reference.html" rel="nofollow">资源 属性。cfnresource类允许 通过cfnoptions属性访问它们:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
0

使用 cfnResource.adddependson方法:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
1

内在函数和条件表达式

cloudformation支持内部函数。这些功能 可以从fn类访问,该类为每个 内部函数和条件表达式:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
2

当使用部署时间值(那些token.isunresolved 返回true,来自编程语言的惯用条件不能是 已使用(该值在部署时才会知道)。当条件逻辑 需要用未解析的值表示,必须使用 通过cfcondition类的云形成条件:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
3

映射

cloudformation使用 cfn映射类:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
4

动态参考

cloudformation支持动态解析值 用于SSM参数(包括安全字符串)和机密管理器。编码这样的 引用是使用cfndynamicreference类完成的:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
5

模板选项和转换

cloudformation模板支持许多选项,包括 在部署堆栈时使用的转换。那些可以 使用stack.templateoptions属性配置:

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
6

发射原始资源

cfnResource类允许在 云信息模板的[resources][cfn resources]部分。

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
7

对于任何其他资源,cloudformation模板中的逻辑id将是 由aws cdk生成,但类型和属性将在 合成模板。

包括原始云形成模板片段

当将云层堆栈迁移到aws cdk时,可以使用 在合成模板中逐字包含现有模板的片段。 这可以使用cfninclude类来实现。

Duration.seconds(300)// 5 minutesDuration.minutes(5)// 5 minutesDuration.hours(1)// 1 hourDuration.days(7)// 7 daysDuration.parse('PT5M')// 5 minutes
8

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Facebook SDK如何正确覆盖onActivityResult()?   macos Java:与命令行应用程序通信   使用Spring引导和Java Web Start(JNLP)时出现异常   java自定义对象转换器JavaFx FXML   TestNG中数据参数化的java优化方法   java Android测验应用程序在更新分数时崩溃   java如何从角度正确地与servlet通信   获取java中当前窗口的位置   linux没有java中的pytorch_jni。图书馆路径   socket保持打开时的java打印缓冲区读取程序   java运行TestNG测试实例   java testng中是否有testFinished侦听器方法?   java将Android Studio升级到2.1.2,现在出现构建错误   Hibernate JPA2中的java空指针异常。0 joinMap   java HttpPost每5秒响应一次   java增加了@ElementCollection中元素的大小   具有PersistenceContext和LockType的java单例ejb。阅读   什么是多项式的次数f(n)=n/20