我可能在这里遗漏了一些明显的东西,但是我似乎找不到有关从ECS任务定义的机密管理器密码中检索特定键/值的文档。
我有一个像这样的ARN秘密...
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import StringProperty, ObjectProperty
import random
from kivy.lang.builder import Builder
class YourWidget(Widget):
def __init__(self, **kwargs):
super(YourWidget, self).__init__(**kwargs)
def change_text(self):
self.label1.text = str(self.ids.input1.text)
Builder.load_string('''
<YourWidget>:
input1:input1
label1:label1
BoxLayout:
orientation: 'vertical'
size: root.size
TextInput:
id: input1
Label:
id: label1
text: ''
Button:
id: button1
text: "Change text"
on_release: root.change_text()
''')
class YourApp(App):
def build(self):
return YourWidget()
if __name__ == '__main__':
YourApp().run()
在这个秘密中,我有像这样的键/值对...
arn:aws:secretsmanager:<region>:<account>:secret:LDAP_Bind_Credentials-abcd
我想做的是在任务定义LDAP_BIND_USER和LDAP_BIND_PASSWORD中定义环境变量,并在我的秘密中引用适当的密钥。
这实际上可行吗,还是我应该在程序中实际对键/值对进行解码?
文档似乎只引用了秘密本身的ARN,而不是秘密中的键/值对。
答案 0 :(得分:3)
从2020年2月开始,ECS任务定义现在支持从JSON对象中的密钥读取AWS Secrets Manager机密,以使用EC2启动类型执行任务。
您可以在任务定义文件的containerDefinitions
中添加以下内容
{
"containerDefinitions": [{
"secrets": [{
"name": "<environment_variable_name>",
"valueFrom": "arn:aws:secretsmanager:<region>:<account_id>:secret:<secret_name>:<json_key>::"
}]
}]
}
答案 1 :(得分:1)
使用秘密是不可能的,您必须在程序内部进行解码。
通常,当ECS检索秘密时,它将为我们提供JSON对象,例如{“ admin”:“ admin”,“ pas”:“ pas”},我们必须以编程方式对其进行解码。
但是另一种替代方法是利用AWS System Manager参数存储[1]来存储密钥,在这种情况下,ECS会直接为您提供实际值。
[1] https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html