标签: aws-secrets-manager

如何在 ebextensions 中最好地使用 AWS Secrets Manager?

我希望使用 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

8
推荐指数
0
解决办法
1766
查看次数

地形 | 秘密经理 | 重用现有机密而不删除

我正在使用 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)

amazon-web-services terraform aws-secrets-manager

8
推荐指数
1
解决办法
5028
查看次数

未知服务:'secretsmanager'或AWS Secrets Manager服务不在AWS CLI列表中

我试图使用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)

amazon-web-services aws-secrets-manager

7
推荐指数
1
解决办法
2500
查看次数

getSecretValue 回调在 AWS Lambda 中不起作用

我正在尝试使用 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

7
推荐指数
1
解决办法
2331
查看次数

AWS Lambda 从 VPC 内访问 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

7
推荐指数
1
解决办法
4423
查看次数

如何从 aws 秘密管理器中检索 terraform 中的秘密

我有一个秘密存储在我可以访问 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 中的等价物?

terraform aws-secrets-manager

7
推荐指数
3
解决办法
5896
查看次数

带有 Springboot lambda 函数的 application.properties 的 AWS 秘密

我已经创建了一个 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

7
推荐指数
1
解决办法
555
查看次数

使用 ECS + Fargate 在 CDK 堆栈中使用来自 AWS Secrets Manager 的密钥

我使用 TypeScript 定义了一个 CDK 应用程序堆栈(敏感信息在下面的代码中重新排列):

\n
import * 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

7
推荐指数
1
解决办法
7367
查看次数

在 ECS 容器的 aws-cdk 中串联 AWS Secret

如何在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

7
推荐指数
1
解决办法
2293
查看次数

从 AWS Secrets Manager 导入 Spring Boot 应用程序中的密钥

我使用该选项将 MySQL 数据库凭证存储在 AWS Secret Manager 中Credentials for other database。我想将这些凭据导入到我的application.properties文件中。根据我在该线程中找到的一些答案,我执行了以下操作:

  1. 添加了依赖spring-cloud-starter-aws-secrets-manager-config
  2. 添加spring.application.name = <application name>spring.config.import = aws-secretsmanager: <Secret name>application.properties
  3. 使用密钥作为以下属性中的占位符:
spring.datasource.url = jdbc:mysql://${host}:3306/db_name
spring.datasource.username=${username}
spring.datasource.password=${password}
Run Code Online (Sandbox Code Playgroud)

我在运行应用程序时收到以下错误:

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

7
推荐指数
1
解决办法
2万
查看次数