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我想访问同一类的不同函数中的函数变量   创建字段/值哈希映射的java反射   java Velocity工具向后兼容性?   cmd JAVA运行时错误:发生JNI错误   java spring引导示例hateoas不工作   java为什么Android Studio和gradle可以使用不同的类路径进行单元测试?   java Selenium Firefox驱动程序初始化   java如何在jar中重新定位gradle依赖项的包   java为什么我的单线程hello world应用程序使用22个OS线程?   正则表达式替换Java字符串中的特殊字符   在任何派生类的构造函数之后运行方法的java   java从输入字符串中找出日期   带有libGdx(Java)音乐的安卓studio可以在Android模拟器上工作,但不能在桌面上工作   java我在getconnection的参数方面有错误吗?   java使用JFileChooser访问选定文件   java如何将Json解析为另一个活动   java使用Resources for html和rest server   java更新列表,列表内容来自循环中的方法   java如何在GLSL中读取完整范围的32位整数纹理