Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 美国焊接学会保密经理';前一轮不是’;不完整';轮换秘密时_Amazon Web Services_Aws Secrets Manager - Fatal编程技术网

Amazon web services 美国焊接学会保密经理';前一轮不是’;不完整';轮换秘密时

Amazon web services 美国焊接学会保密经理';前一轮不是’;不完整';轮换秘密时,amazon-web-services,aws-secrets-manager,Amazon Web Services,Aws Secrets Manager,我创建了一个秘密,并将其更新为lambda旋转函数 我的秘密看起来像 aws secretsmanager list-secret-version-ids --secret-id envir/username { "Versions": [ { "VersionId": "90179cd3-daa1-48e4-9fe5-dde0a4cf22e4", "VersionStages": [ "AW

我创建了一个秘密,并将其更新为lambda旋转函数

我的秘密看起来像

aws secretsmanager list-secret-version-ids --secret-id envir/username
{
    "Versions": [
        {
            "VersionId": "90179cd3-daa1-48e4-9fe5-dde0a4cf22e4",
            "VersionStages": [
                "AWSPREVIOUS"
            ],
            "LastAccessedDate": 1524528000.0,
            "CreatedDate": 1524568488.358
        },
        {
            "VersionId": "60576823-5d98-4360-af53-7e1f909b88d0",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "LastAccessedDate": 1524528000.0,
            "CreatedDate": 1524568827.466
        }
    ],
    "ARN": "arn:aws:secretsmanager:eu-west-1:8282828282828:secret:username-YdgbPA",
    "Name": "envir/username"
}
当我试着旋转它时,我得到了这个错误

An error occurred (InvalidRequestException) when calling the RotateSecret operation: A previous rotation isn’t complete. That rotation will be reattempted.
如果我触发lambda函数而没有问题,我可以旋转秘密而没有问题

有人有什么想法吗


相关链接:

  • 这不适用于我,因为我在
    州没有秘密

问题在于lambda函数失败,并且在没有我的控制的情况下重试(目前没有办法限制lambda函数的重试)。

对于认为上的链接不适用的任何人,确保检查
aws secretsmanager列表机密版本ID
aws secretsmanager列表机密的输出,以确保它们彼此同步。我只是有一个秘密,我不能旋转,不断得到“前一个旋转未完成。该旋转将被重新尝试”错误消息。我有一个AWS打开的支持案例,当我等待与支持代表通话时,我决定检查
列表机密
的输出,不料,我在无法旋转的机密上发现了一个AWS标签(该标签没有显示在该机密的
列表机密版本ID
的输出上)。一旦我清除了标签,我就可以成功地旋转我遇到问题的秘密。

这只是给将来可能会遇到同样错误的人的一个提示

如果您使用AWS机密管理器旋转亚马逊RDS密码,则机密管理器将自动创建Lambda函数。此功能需要:

  • 访问与lambda功能相关的子网/子网中的机密管理器服务的Internet(调用机密管理器)或VPC端点
  • 访问RDS实例(登录并更改密码)
因此,以下组合起作用:

  • 具有Lambda函数且未连接到VPC的公共可访问数据库(不利于安全),或
  • 专用子网中的Lambda函数在公用子网中具有NAT网关(因此Lambda函数可以访问Internet)或附加到Lambda函数的ENI的弹性IP地址
此外,连接到数据库的安全组需要允许Lambda函数进行入站访问。默认情况下,Lambda函数与数据库使用的安全组相同,因此:

  • 编辑数据库安全组以允许从其自身进行入站连接(即,通过同一安全组从Lambda到数据库),或
  • 将Lambda函数使用的安全组更改为当前允许访问数据库安全组的安全组

对于仍然存在此问题的任何人,您可以尝试清除挂起的版本并重新尝试轮换

例如,对于具有secret id的secret
theprog
,调用

aws secretsmanager get-secret-value \
    --secret-id thefrog \
    --version-stage AWSPENDING
获取带有挂起标签的版本的版本id。结果看起来像

{
“CreatedDate”:1541540242.561,
“名称”:“thefrog”,
“版本阶段”:[
“财政支出”
],                                                    
“秘密字符串”:“绝密”,
“ARN”:“ARN:aws:secretsmanager:xxxxxxxxxxxxxxxxxxxxxxxx”,
“版本ID”:“2a27cecb-23c7-4320-b168-78661c24612f”
} 
然后打电话

aws secretsmanager update-secret-version-stage \
    --secret-id thefrog \
    --version-stage AWSPENDING \
    --remove-from-version-id 2a27cecb-23c7-4320-b168-78661c24612f
删除具有挂起标签的机密版本


从这里您可以重试旋转

我遇到了类似的问题。对于我的documentdb,我有一个cloudformation模板,该模板包含以下模板内容:

  MyDocumentDbSecret:
    Type: AWS::SecretsManager::Secret
    Properties:
      Name: "/secrets/documentdb/root"
      Description: 'DocDB root secret'
      GenerateSecretString:
        SecretStringTemplate: !Sub '{"username": "${DefaultDocDbUser}"}'
        GenerateStringKey: "password"
        PasswordLength: 16
        ExcludeCharacters: '"@/\'
但是使用这个cloudformation模板,我总是在lambda函数中得到一个连接超时(它试图为用户更改我的密码)

但当我在SecretStringTemplate属性中将cloudformation模板更改为ssl=true时:

  DocDBClusterRotationSecret:
    Type: AWS::SecretsManager::Secret
    Properties:
      Name: "/secrets/documentdb/root"
      Description: 'DocDB root secret'
      GenerateSecretString:
        SecretStringTemplate: !Sub '{"username": "${DefaultDocDbUser}", "ssl": "true"}'
        GenerateStringKey: "password"
        PasswordLength: 16
        ExcludeCharacters: '"@/\'
然后它就正常工作了。对于我的cloudformation类型:AWS::SecretsManager::SecretTargetAttachment不提供属性为ssl=true的机密,因此我需要在我的cloudformation模板中手动添加它。现在它可以完美地工作,没有错误

我的秘密字符串现在看起来像这样:

{
 "password": "My PW",
 "engine": "mongo",
 "port": 27017,
 "host": "My Host",
 "ssl": "true",
 "username": "My User"
}

我想知道为什么他们会在旋转失败的地方保留AWExpensing标签难道重试不是只有在重新尝试旋转时才会发生?只是想知道什么输出指示旋转成功发生?我得到了这个
“Versions”:[{“VersionId”:“xxx”,“VersionStages”:[“AWSCURRENT”],“LastAccessedDate”:1580342400.0,“CreatedDate”:1580391706.854},{“VersionId”:“xxxx”,“VersionStages”:[“AWSPREVIOUS”],“LastAccessedDate”:158042400.0,“CreatedDate”:1580297852.964}
(抱歉,一条评论中无法容纳)这是否意味着我的凭据已被轮换?我在SM控制台中检查了密码。密码没有更改。是否可以将轮换lambda和数据库放在同一个安全组中?@Dan资源通常不会“在同一个安全组中”。安全组与资源“在子网中”的子网不同。相反,安全组规则适用于它们关联到的每个单独的资源。仅仅因为两个资源具有相同的安全组并不意味着它们可以通信-只有当安全组