如何使用AWS CLI在生产中部署AWS Secret Manager检索代码?

问题描述

我已经编写了一些代码来从AWS Secrets Manager检索我的机密,以用于其他组件的进一步处理。在开发环境中,我使用AWS CLI配置了凭证。编译代码后,我就可以从VS以及生成的exe上运行它。

这是连接到机密管理器并检索机密的代码

public static string Get(string secretName)
        {
            
            var config = new AmazonSecretsManagerConfig { RegionEndpoint = RegionEndpoint.USWest2 };
            
            IAmazonSecretsManager client = new AmazonSecretsManagerClient(config);
         
            var request = new GetSecretValueRequest
            {
                SecretId = secretName
            };

            GetSecretValueResponse response = null;
            try
            {
                response = Task.Run(async () => await client.GetSecretValueAsync(request)).Result;
            }
            catch (ResourceNotFoundException)
            {
                Console.WriteLine("The requested secret " + secretName + " was not found");
            }
            catch (InvalidRequestException e)
            {
                Console.WriteLine("The request was invalid due to: " + e.Message);
            }
            catch (InvalidParameterException e)
            {
                Console.WriteLine("The request had invalid params: " + e.Message);
            }

            return response?.SecretString;
        }

此代码从AWS CLI中提取凭证,但是当我尝试在另一台PC上运行此代码时,它会出现预期的IAM安全错误,因为它无法确定连接到密钥管理器的凭证。>

在生产环境中部署这种配置的最佳方法是什么?我是否需要在每个部署中安装和配置AWS CLI?

解决方法

如果您要在AWS中部署代码,则可以使用IAM角色,其策略允许从Secret Manager获取机密,并将此角色附加到EC2或ECS等中

,

如果您在具有现有身份验证基础结构的公司环境中,则可能需要查看与AWS结合使用的identity federation解决方案。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...