我希望使用 AWS Secrets Manager 来获取机密并将它们设置为我的 Elastic Beanstalk 实例上的环境变量。
我已经在 ebextensions 文件上编写了一个脚本,该脚本调用 Secrets Manager CLI 来获取我的秘密,并使用该秘密来填充我的 EB 实例的 env 变量。由于它是 linux 实例,我正在尝试export ENV_VAR_NAME=env_value
. 这是我到目前为止所拥有的:
packages:
yum:
epel-release: []
jq: []
files:
"/home/ec2-user/test.sh" :
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
config=$(aws --region us-west-1 secretsmanager get-secret-value --secret-id secret | jq -rc '.SecretString'')
export SECRET_KEY=$(echo $config | jq -rc '.awsKey')
# Used to print current env variables
env
commands:
0_test:
command: /home/ec2-user/test.sh
#I've also tried replacing 'commands' with 'container_commands' …
Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-elastic-beanstalk ebextensions aws-secrets-manager
我正在使用 Terraform 代码在 AWS 中创建 Secret。我的 Jenkins 管道将每 2 小时创建一次基础设施并销毁它。2 小时后重新创建基础设施后,AWS Secrets 不允许我再次重新创建并抛出以下错误。请建议。
Error: error creating Secrets Manager Secret: InvalidRequestException: You can't create this secret because a secret with this name is already scheduled for deletion.
status code: 400, request id: e4f8cc85-29a4-46ff-911d-c5115716adc5
Run Code Online (Sandbox Code Playgroud)
TF代码:-
resource "aws_secretsmanager_secret" "secret" {
description = "${var.environment}"
kms_key_id = "${data.aws_kms_key.sm.arn}"
name = "${var.environment}-airflow-secret"
}
resource "random_string" "rds_password" {
length = 16
special = true
}
resource "aws_secretsmanager_secret_version" "secret" {
secret_id = "${aws_secretsmanager_secret.secret.id}"
secret_string = <<EOF
{
"rds_password": …
Run Code Online (Sandbox Code Playgroud) 我试图使用AWS秘密管理器服务来存储密钥.我可以将密钥存储在秘密管理器中,但是在使用它们提供的代码检索密钥时,我收到了此错误.
UnknownServiceError:未知服务:'secretsmanager'.有效的服务名称是:acm,alexaforbusiness,...
我尝试在AWS CLI上进行搜索,该服务也不在列表中.
aws: error: argument command: Invalid choice, valid choices are:
acm | alexaforbusiness
apigateway | application-autoscaling
appstream | appsync
.
.
.
Run Code Online (Sandbox Code Playgroud)
我需要某种aws cli更新吗?可能是因为我正在使用的CLI版本.那么,我该如何更新呢.我试过了
sudo apt-get install -y awscli
Run Code Online (Sandbox Code Playgroud)
它说
awscli is already the newest version (1.11.13-1ubuntu1~16.04.0).
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 aws-sdk for Javascript 从 AWS Secret Manager 检索秘密值,我正在使用 Secret Manager 提供的代码片段,我已将此代码包含在 Lambda 函数中,但我看不到任何已定义的控制台日志回调函数里面。这是 lambda 代码:
exports.handler = async (event, context) => {
const AWS = require('aws-sdk');
const client = new AWS.SecretsManager({ region: "eu-west-2" });
let secret;
let decodedBinarySecret;
console.log('STARTED');
client.getSecretValue({ SecretId: "MagellanDev" }, function (err, data) {
if (err) {
console.log('Got Error: ', err.code);
throw err;
}
else {
if ('SecretString' in data) {
secret = data.SecretString;
} else {
let buff = new Buffer(data.SecretBinary, 'base64');
decodedBinarySecret = buff.toString('ascii'); …
Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services aws-lambda aws-kms aws-secrets-manager
我有一个需要与私有 VPC 中的 EC2 实例“本地”通信的 lambda。API 密钥存储在 Secrets Manager 中。
使用 Secrets Manager 提供的默认代码和必要的 IAM 角色,我可以从我的 Lambda 中的 Secrets Manager 读取 API 密钥:
# Use this code snippet in your app.
# If you need more information about configurations or implementing the sample code, visit the AWS docs:
# https://aws.amazon.com/developers/getting-started/python/
import boto3
import base64
from botocore.exceptions import ClientError
def get_secret():
secret_name = "MYSECRET"
region_name = "ap-southeast-2"
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name …
Run Code Online (Sandbox Code Playgroud) amazon-ec2 amazon-web-services amazon-vpc aws-lambda aws-secrets-manager
我有一个秘密存储在我可以访问 arn 的秘密管理器中。我想从此 arn 检索值并在 terraform 中使用它,我该如何实现?
我从 terraform 网站上找到了这个
data "aws_secretsmanager_secret" "by-arn" {
arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456"
}
Run Code Online (Sandbox Code Playgroud)
然后我如何检索该值?意思是什么是“ get-value"
EC2 istance 在 terraform 中的等价物?
我已经创建了一个 Spring 启动应用程序,我想在其中将 AWS 机密用于 application.properties。我正在使用 spring boot 2.2.6.RELEASE 并且根据文档我在我的 pom 中添加了以下依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-secrets-manager-config</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在 AWS Secrets Manager 服务中,我创建了一个“其他类型的密钥”类型的新密钥,并为其命名为/secret/myservice。为了测试,我添加了一个密钥作为环境,并将值添加为aws,我想在我的控制器中检索它。我不清楚的部分是我需要在 bootstrap.yml 文件中创建的条目,因为我对Spring Cloud AWS 文档中的说明感到困惑。有人可以提供一些正确的说明,因为我无法正确使用此功能。作为参考,我在 bootstrap.yml 文件中添加了这个:
aws:
secretsmanager:
name: myservice
prefix: /secret
enabled: true
defaultContext: application
failFast: true
cloud:
aws:
region:
static: us-east-1
Run Code Online (Sandbox Code Playgroud)
并尝试在控制器中检索环境值:
@RestController
@EnableWebMvc
public class PingController {
@Value(value = "${environment}")
private String environment;
@RequestMapping(path = "/ping", method = RequestMethod.GET) …
Run Code Online (Sandbox Code Playgroud) java spring amazon-web-services spring-boot aws-secrets-manager
我使用 TypeScript 定义了一个 CDK 应用程序堆栈(敏感信息在下面的代码中重新排列):
\nimport * as cdk from "@aws-cdk/core";\nimport * as ec2 from "@aws-cdk/aws-ec2";\nimport * as ecs from "@aws-cdk/aws-ecs";\nimport * as ecr from "@aws-cdk/aws-ecr";\nimport * as ecr_assets from "@aws-cdk/aws-ecr-assets";\nimport * as ecs_patterns from "@aws-cdk/aws-ecs-patterns";\nimport * as sm from "@aws-cdk/aws-secretsmanager";\n\nexport class CdkAppStack extends cdk.Stack {\n constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n // Create a Docker image and upload it to the Amazon Elastic Container Registry (ECR)\n const dockerImage = new ecr_assets.DockerImageAsset(this, "ApiDockerImage", {\n directory: …
Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-ecs aws-fargate aws-secrets-manager aws-cdk
如何在Credentials.fromGeneratedSecret()
不使用 写出秘密的情况下从调用中创建 postgres URI 连接字符串toString()
?
我想我在某处读过制作一个 lambda 来做到这一点,但是这似乎有点矫枉过正
const dbCreds = Credentials.fromGeneratedSecret("postgres")
const username = dbCreds.username
const password = dbCreds.password
const uri = `postgresql://${username}:${password}@somerdurl/mydb?schema=public`
Run Code Online (Sandbox Code Playgroud)
上面的事情我肯定做不到。但是我的 hasura 和 api ECS 容器需要像上面这样的连接字符串,所以我认为这可能是一个解决的问题?
environment-variables amazon-web-services aws-cloudformation aws-secrets-manager aws-cdk
我使用该选项将 MySQL 数据库凭证存储在 AWS Secret Manager 中Credentials for other database
。我想将这些凭据导入到我的application.properties
文件中。根据我在该线程中找到的一些答案,我执行了以下操作:
spring-cloud-starter-aws-secrets-manager-config
spring.application.name = <application name>
和spring.config.import = aws-secretsmanager: <Secret name>
在application.properties
Run Code Online (Sandbox Code Playgroud)spring.datasource.url = jdbc:mysql://${host}:3306/db_name spring.datasource.username=${username} spring.datasource.password=${password}
我在运行应用程序时收到以下错误:
java.lang.IllegalStateException: Unable to load config data from 'aws-secretsmanager:<secret_name>'
Caused by: java.lang.IllegalStateException: File extension is not known to any PropertySourceLoader. If the location is meant to reference a directory, it must end in '/' or File.separator
Run Code Online (Sandbox Code Playgroud)
首先,我遵循的流程正确吗?如果是,此错误与什么有关以及如何解决?
amazon-web-services spring-boot spring-cloud spring-cloud-config aws-secrets-manager
aws-cdk ×2
aws-lambda ×2
spring-boot ×2
terraform ×2
amazon-ec2 ×1
amazon-ecs ×1
amazon-vpc ×1
aws-fargate ×1
aws-kms ×1
ebextensions ×1
java ×1
javascript ×1
spring ×1
spring-cloud ×1