ancient-art-44051
11/05/2024, 5:57 AM# enterprise-role-creation/aws
values:
  aws:
    region: us-east-2
    login:
      fn::open::aws-login:
        oidc:
          duration: 1h
          roleArn: arn:aws:iam::<account>:role/enterprise-role-creation
          sessionName: pulumi-environments-session
  environmentVariables:
    AWS_ACCESS_KEY_ID: ${aws.login.accessKeyId}
    AWS_SECRET_ACCESS_KEY: ${aws.login.secretAccessKey}
    AWS_SESSION_TOKEN: ${aws.login.sessionToken}
    AWS_REGION: us-east-2
running pulumi env open enterprise-role-creation/dev works as expected
{
  "aws": {
    "login": {
      "accessKeyId": "<redacted>",
      "secretAccessKey": "<redacted>",
      "sessionToken": <redacted>"
    },
    "region": "us-east-2"
  }
}
for the stack config
environment:
  - enterprise-role-creation/dev
and IAM Trust Policy (limiting both the stack and environment)
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<account>:oidc-provider/api.pulumi.com/oidc"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "api.pulumi.com/oidc:sub": "pulumi:deploy:org:pacificfusion:project:enterprise-role-creation:dev",
          "api.pulumi.com/oidc:aud": "aws:pacificfusion"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<account>:oidc-provider/api.pulumi.com/oidc"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "api.pulumi.com/oidc:sub": "pulumi:environments:org:pacificfusion:env:enterprise-role-creation/dev",
          "api.pulumi.com/oidc:aud": "aws:pacificfusion"
        }
      }
    }
  ]
}
when running pulumi preview --stack dev , receive
error: getting stack configuration: opening environment: [0] 
Diags: could not authenticate with AWS.
Please ensure that your trust relationship is correct.
Subject: "pulumi:environments:org:pacificfusion:env:<yaml>"
Audience: "aws:pacificfusion"
WebIdentityErr: failed to retrieve credentials
caused by: AccessDenied: Not authorized to perform sts:AssumeRoleWithWebIdentity
        status code: 403, request id: d69607e2-d3f3-4c6e-bf41-12905268f6c9
but if I open up the Trust Policy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<account>:oidc-provider/api.pulumi.com/oidc"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "api.pulumi.com/oidc:aud": "aws:pacificfusion"
        }
      }
    }
  ]
}
the pulumi preview command works fine
There is obviously some mismatch in my environment (and the resulting 'sub' in the OIDC request) that isn't matching what is in the Trust policy for environments
this line doesn't seem to be resolving the actual environment name
`Subject: "pulumi:environments:org:pacificfusion:env:<yaml>"
based on error feedback
what am I missing in the pulumi environment file and/or the Trust Policy to allow limiting role assumption to the specific stack and environment??ancient-art-44051
11/05/2024, 1:14 PMsubjectAttributes to environment file for aws-login
values:
  aws:
    region: us-east-2
    login:
      fn::open::aws-login:
        oidc:
          duration: 1h
          roleArn: arn:aws:iam::<account>:role/enterprise-role-creation
          sessionName: pulumi-environments-session
          # added this section
          subjectAttributes: 
            - currentEnvironment.name
  environmentVariables:
    AWS_ACCESS_KEY_ID: ${aws.login.accessKeyId}
    AWS_SECRET_ACCESS_KEY: ${aws.login.secretAccessKey}
    AWS_SESSION_TOKEN: ${aws.login.sessionToken}
    AWS_REGION: us-east-2
and tweak the trust policy for the sub statement for the environment
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::<account>:oidc-provider/api.pulumi.com/oidc"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "api.pulumi.com/oidc:aud": "aws:pacificfusion",
                    "api.pulumi.com/oidc:sub": "pulumi:deploy:org:pacificfusion:project:enterprise-role-creation:dev"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::<account>:oidc-provider/api.pulumi.com/oidc"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "api.pulumi.com/oidc:aud": "aws:pacificfusion",
                    // updated based on subjectAttribute
                    "api.pulumi.com/oidc:sub": "pulumi:environments:pulumi.organization.login:pacificfusion:currentEnvironment.name:enterprise-role-creation/dev"
                }
            }
        }
    ]
}