问题标签 [aws-parameter-store]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2019 浏览

amazon-web-services - CloudFormation 模板中未解析的 Parameter Store SecureString 动态引用

根据 AWS 的说法,当使用 CloudFormation 部署需要机密(即密码或类似内容)的基础设施时,一种流行的解决方案是使用来自 SSM 的 Parameter Store 的 SecureStrings。

然而,尽管现有的CFN 文档逐步描述了如何在 CFN 模板中使用动态引用,但我无法设法利用 SecureStrings 的实际值。

假设存储在 SSM 参数存储中的现有 SecureString 的以下 JSON 表示:

以及使用它的 YAML CFN 模板,如文档中所述:

上述解决方案不起作用,因此要么我错误地定义了模板,要么没有正确实现对这个功能的支持,考虑到它来自 AWS,这对我来说似乎很奇怪。

特别是,我遇到了以下所有最终都以UPDATE_FAILED堆栈形式出现的错误:

  1. 每当要解析的引用参数名称足够长时,CloudFormation 就会抱怨:

参数 MasterUserPassword 不是有效密码,因为它超过 64 个字符。(服务:AmazonRedshift;状态代码:400;错误代码:InvalidParameterValue;请求 ID:7be9bd43-2927-11e9-aa88-29bbdcae859e)

  1. 此外,即使特别提到可以在模板引用中使用斜线,/infrastructure/datawarehouse/redshift/MyRedshiftMasterUserPassword也会发出以下错误:

参数 MasterUserPassword 不是有效密码。只能使用除 '/'、'@'、'"'、''、'\'、''' 之外的可打印 ASCII 字符。(服务:AmazonRedshift;状态代码:400;错误代码:InvalidParameterValue)

因此,作为结果引用的 SecureString 似乎与 SSM ParameterStore 层次结构(带有斜杠的参数)不兼容。

  1. 此外,从参数名称中删除任何先前报告的无效字符,然后它会抱怨以下内容:

参数 MasterUserPassword 必须至少包含 1 个大写字母。(服务:AmazonRedshift;状态代码:400;错误代码:InvalidParameterValue;请求 ID:90a263bd-2929-11e9-80c0-ffcecf297c44)


最后,尽管在模板中使用基本的短非斜线Parameter name允许堆栈完成更新操作动态引用仍然不会发生,因为使用的实际值结果是提供的参数名称而不是由此引用的值,例如MyRedshiftMasterUserPassword而不是Abcd2019.

我知道也可以使用 AWS Secrets Manager,但它不是免费的。

0 投票
0 回答
972 浏览

.net - 使用 jenkins 管道在 web.config 文件中进行参数替换

我对使用 jenkins groovy 管道非常陌生。我正在尝试找到一种方法来替换配置文件中特定于环境的变量,例如

因此,在构建步骤中,我想运行变量替换步骤,它可以替换 AWS 参数存储管理的所有变量。

我知道有一些方法可以使用 Envject 之类的插件替换变量,但它会替换 jenkins 中定义的 ENV 变量。另一种选择是进行参数化构建,随着配置变量数量的增加,它会变得复杂。

可能的解决方案是运行 shell 脚本以使用文件替换变量。

所以,我正在寻找选择

1)使用詹金斯管道存储环境特定变量的有效方法是什么

2)使用什么变量替换策略?例如文本、基于内容的替换或其他插件。

非常感谢任何帮助。

提前致谢。

0 投票
2 回答
1129 浏览

amazon-web-services - 如何使用 lambda 中的函数从 aws 参数存储中访问参数

我正在尝试使用以下代码从 Parameter Store 中提取参数值:

我检查了正在运行的 SDk 的版本,并且控制台注销了 2.339.0 版本,因此我将其添加为 package.json 依赖项中的显式引用"aws-sdk": "^2.339.0"

每当我部署此 lambda 并执行调用 lambda 的测试时,我都会收到以下异常:

查看 API 文档,我写的方法看起来(对我来说)是正确的,但我继续得到这个异常。

关于如何将参数值从存储中拉出并在 lambda 中使用的任何建议?

0 投票
5 回答
8082 浏览

amazon-web-services - 如何从 aws 参数存储中导出参数并导入另一个帐户

在我的第一个aws 帐户中,我以以下方式指定了参数:

我想将这些移至我的第二个aws 帐户。

我在参数存储中手动创建了这些参数。

我怎样才能轻松地将这些值从一个帐户复制到另一个帐户?

使用aws ssm get-parameters --names "<param-name>"会有点太困难,因为我有太多的参数。

0 投票
3 回答
17974 浏览

amazon-web-services - 如何使用 node.js 和 aws-sdk 从 lambda 访问 aws 参数存储

我创建了一个 lambda 和云形成模板,它授予 lambda 访问参数存储和秘密管理器的权限。当我测试 lambda 时,我在 export.handler 函数之外有以下函数:

servmgr被实例化为var servmgr = new AWS.SSM();

当我从 export.handler 函数调用这个函数时,我这样做:

在 lambda 中,我有函数检索在 export.handler 函数 bt 之外定义的参数,该函数包含在一个 promise 中。

当我运行/测试这个 lambda 时,返回的对象总是未定义的......我得到了 Parameters[] 但没有值。

如何在运行时将参数值返回给 lambda?

更新

根据 Thales 的建议/回答,我将 lambda 简化为:

我仍然看到在我的测试中返回一个空数组:

我还将函数移到回调中

同样的结果......空数组。还有什么要尝试的吗?

0 投票
1 回答
848 浏览

amazon-cloudformation - CloudFormation中如何同时定义和使用SSM参数?

这是一个 SAM 模板(与 CloudFormation 模板相同):

我无法部署此堆栈,因为:

当然,我是在堆栈中创建这个参数……</p>


如何引用我在同一模板中创建的 SSM 参数?

0 投票
2 回答
3726 浏览

amazon-web-services - AWS ECS 环境变量

我花了一些时间对此进行研究,但仍然不清楚 ECS 环境变量在安全性方面如何安全使用,但是否适用于 docker 的 ENV 和 ENV-FILE 选项?

例如:AWS ECS 文档声明将机密添加到任务定义中,它们将作为容器环境变量提供。

Docker 文档有类似的语言:

当容器从生成的图像运行时,使用 ENV 设置的环境变量将保持不变。您可以使用 docker inspect 查看值,并使用 docker run --env = 更改它们。

现在,我找不到答案的问题是,如果两个选项都在容器内设置环境变量(这意味着用户可以在 docker 检查时查看),那么使用 AWS ECS 环境变量有什么好处?

从 AWS 参数存储(或)SSM 获取变量(如 dbuser、dbpassword)但不将它们设置为容器环境变量(如果可能,不使用 docker entryscript)的最佳策略是什么?

0 投票
1 回答
529 浏览

micronaut - 我应该如何使用 application.yml 将存储在 aws 参数存储中的属性配置到 micronaut

我想使用内置的 micronaut 发现客户端在我的 micronaut 应用程序中使用 aws 参数存储中的属性,但是在提到“rootHierarchyPath”之后如何配置和注入各个参数并没有正确记录

这是 application.yml 代码,我已经提到了根路径但是找不到如何获取存储在参数存储中的条目“dbUserName”和“dbPassword”。

aws:客户端:系统管理器:参数存储:启用:真 useSecureParameters:真 rootHierarchyPath:/application/db

0 投票
1 回答
2810 浏览

amazon-web-services - AWS 参数存储:AWSSimpleSystemsManagementException:超出速率

目前,我需要在 AWS 参数存储中检索一些参数的最后 10 个值

我在 kotlin 中使用以下代码:

这是retrieveAllValidVersions的代码

https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_ssm中所述,参数的最大版本数为 100

正如https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameterHistory.html所述,您只能在 maxResults 中检索 50 个值,因此我需要为每个参数调用 2 次(因为我有超过 50 个版本)

因此,每次检索我的 3 个参数都需要对 SSM 进行 6 次查询

我将每个参数的最后 10 个值缓存在内存中 5 分钟

问题是,当我的 lambdas 的多个实例同时过期其缓存时,它们会同时进行检索并且

例如,如果涉及 3 个实例,它将在不到一秒的时间内完成 18 个请求,我会遇到错误(注意:我不知道同时命中此代码的实例数是否为 3,这只是一个猜测来说明您在某些时候遇到了错误)

所以我有两个问题:

首先,有没有办法首先检索参数的最新版本?

这样,我将完成一半的请求,这样我就不会经常遇到问题了!

其次,如何自动重试节流错误?

我发现这篇 AWS 博客 [1] 帖子说我必须解析错误消息,但这是一篇旧帖子(2013 年),这非常难看(AWS 更改消息的那一刻,所有机制都崩溃了)!

[1]:https ://aws.amazon.com/fr/blogs/messaging-and-targeting/how-to-handle-a-throttling-maximum-sending-rate-exceeded-error/

最后一点:我正在使用带有“自动加密”和 IAM 的参数存储,我不想将参数存储在我自己的数据库中,也不想将它们缓存在像 redis 这样的共享内存缓存中!

0 投票
2 回答
2059 浏览

node.js - NestJs TypeORM 配置使用 AWS Parameter Store

NestJS 的新手,遇到了一个问题。对于我们的部署,我们需要从 AWS Parameter Store (Systems Manager) 获取我们的配置,包括数据库连接字符串。我有一个 ConfigModule 和 ConfigService,它根据参数存储路径检索我的环境的所有参数存储条目:

这是我的配置服务:

这是主要的应用程序模块声明块:

如您所见,我告诉 TypeORM 在 ConfigService 中调用 getDatabase() 方法,问题是加载参数存储条目大约需要 3-4 秒,因此会出现“未定义”错误,因为“this.awsParamStoreEntries”当 TypeORM 尝试加载连接字符串时仍然未定义。

已在网上搜索以查看是否已完成,但找不到以这种方式使用 NestJS / TypeORM / AWS Parameter Store 的任何东西。StackOverflow 上也有一个现有的(未回答的)问题。

谢谢!