Dam*_*per 5 amazon-web-services aws-api-gateway aws-cdk
我无法找到如何从 apigateway 密钥中获取 api 密钥。我可以获取其 ID 和 ARN,但无法获取其值。我知道您可以在创建密钥时指定值,但不能在创建后指定如何检索它——除非登录到 AWS GUI 并以这种方式找到它。
我查看了 aws-apigateway.ApiKey 的文档,但找不到任何获取该值的方法。https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.ApiKey.html我还查看了 kms 键,因为您可以获得它们的值,但我没有了解它是否可以在 API 网关使用计划的上下文中使用(不包含在下面的代码中)。
如果无法获取该值,是否有办法生成一个不会改变或持续存在的值?我正在使用临时 Jenkins 节点来运行 CDK。
const apiGateway = require('@aws-cdk/aws-apigateway');
...
const apiKey = new apiGateway.ApiKey(this, 'api-key', {
apiKeyName: 'my-api-key',
});
...
new cdk.CfnOutput(this, 'x-api-key-apiKey_id', {
value: apiKey.keyId
});
new cdk.CfnOutput(this, 'x-api-key-apiKey_keyArn', {
value: apiKey.keyArn
});
Run Code Online (Sandbox Code Playgroud)
如果没有自定义资源,我们无法通过 cdk/cloudformation 检索自动生成的密钥。但是我们可以生成密钥,将其存储在秘密管理器或 ssm 秘密中,并使用它来创建 api 密钥。
const secret = new secretsmanager.Secret(this, 'Secret', {
generateSecretString: {
generateStringKey: 'api_key',
secretStringTemplate: JSON.stringify({ username: 'web_user' }),
excludeCharacters: ' %+~`#$&*()|[]{}:;<>?!\'/@"\\',
},
});
this.restApi.addApiKey('ApiKey', {
apiKeyName: `web-app-key`,
value: secret.secretValueFromJson('api_key').toString(),
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6935 次 |
| 最近记录: |