使用aws-vault构建和运行Goland IDE

4si2a6ki  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(163)

试图谷歌戈兰 d vs戈兰 g 的东西被证明是相当困难的。我搜索的一切似乎都是为了代码或切换配置文件。这一切都已经处理好了。
我有一个项目正在接受JSON并处理数据,我能够使用运行和调试按钮来构建和调试我的默认配置的go代码。

这改变了我从S3中提取数据文件,这需要对我们使用aws-vault的aws进行身份验证。
我遇到的问题是在此配置中没有其他设置。有一个Run after build的复选框,但我没有办法说运行aws-vault

现在,我必须取消选中Run after build并添加标志
-gcflags="-N -l" -o app
然后使用Shift + Option + fn + F5附加到该进程。
我正在寻找的是能够在IDE中运行aws-vault exec user -- go ...,这样我就没有一个构建步骤,一个运行步骤,然后手动附加到进程。

smdnsysy

smdnsysy1#

至少我认为这是一个更好的解决方案,允许您运行任何使用AWS SDK的代码(包括cli)。
我用的是Mac电脑,所以osascript对我很有效,但是提示符可以是你的操作系统支持的任何东西。或者如果你有Yubikey,你可以使用prompt=ykman
~/.aws中,有2个文件configcredentials,它们告诉SDK如何进行身份验证。
要在~/.aws/config中开始,需要为每个角色提供一个配置文件。默认角色是您假定所有其他角色都是代码将升级到的角色。

[default]
output=json
region=<your region>
mfa_serial=arn:aws:iam::<you>

[profile dev-base]
source_profile=default
role_arn=arn:aws:iam::<account to escalate to>

[profile staging-base]
source_profile = default
role_arn = arn:aws:iam::<account to escalate to>

[dev]
region = <your region>

[staging]
region = <your region>

注意:一个奇怪的地方是,我必须把角色和地区放在这个文件中,这样角色才会存在。
如果你没有使用java,这可能是不需要的。你可以把完整的角色放在~/.aws/credentials的前一个文件中(但是我也使用java,所以这是我的设置)

[dev]
ca_bundle = /Users/<username>/.aws/cert.pem
credential_process=aws-vault exec dev-base -j --prompt=osascript

[staging]
ca_bundle = /Users/<username>/.aws/cert.pem
credential_process=aws-vault exec master-base -j --prompt=osascript

注意:这里的一个奇怪之处是指定了ca_bundle。golang中的一些东西对使用AWS_CA_BUNDLE不满意,但这似乎有效。
现在,当运行代码时,将显示一个弹出窗口,要求提供MFA令牌。
此外,在运行任何aws cli命令时,您可以使用要使用的--profile ie aws s3 ls --profile dev,此时将出现弹出窗口。
当使用aws-vault时,手动编辑这些文件可能不是最好的方法,但目前这是我们管理它们的方式,这似乎给予最好的工作流程。

相关问题