sparse-intern-71089
05/21/2020, 4:48 PMwonderful-dog-9045
05/21/2020, 4:53 PM${topicData.map((data) => statement(inboundSqs.arn, data.topic.arn)).join(`,`)}
wonderful-dog-9045
05/21/2020, 4:56 PMpulumi.output({quarn: queueArn, tarn: topicArn}).apply(({quern, tarn}) => { ... })
best-lifeguard-91445
05/21/2020, 4:56 PMbest-lifeguard-91445
05/21/2020, 4:57 PMbest-lifeguard-91445
05/21/2020, 5:28 PMDiagnostics:
pulumi:pulumi:Stack (aws-prod):
"Version": "2012-10-17",
"Id": "sqspolicy",
"Statement": [
Calling [toString] on an [Output<T>] is not supported.
To get the value of an Output<T> as an Output<string> consider either:
1: o.apply(v => `prefix${v}suffix`)
2: pulumi.interpolate `prefix${v}suffix`
See <https://pulumi.io/help/outputs> for more details.
This function may throw in a future version of @pulumi/pulumi.
]
}
best-lifeguard-91445
05/21/2020, 6:39 PMfunction createQueuePolicyStatement(inboundSqs: aws.sqs.Queue, topicData: TopicData[]): pulumi.Output<string> {
const statement = (queueArn: Output<string>, topicArn: Output<string>) => {
return pulumi.interpolate`
{
"Effect": "Allow",
"Principal": "*",
"Action": "SQS:SendMessage",
"Resource": "${queueArn}",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "${topicArn}"
}
}
}`;
}
const policyStatement = pulumi.interpolate`
{
"Version": "2012-10-17",
"Id": "sqspolicy",
"Statement": [
${topicData.map((data) => statement(inboundSqs.arn, data.topic.arn))}
]
}`;
policyStatement.apply((p) => {
console.log('policy', p.toString());
});
return policyStatement;
}
best-lifeguard-91445
05/21/2020, 6:39 PMwonderful-dog-9045
05/21/2020, 7:00 PMinterpolate
is new to me.wonderful-dog-9045
05/21/2020, 7:00 PMbest-lifeguard-91445
05/21/2020, 7:06 PM"Statement": [
${topicData.map((data) => statement(inboundSqs.arn, data.topic.arn))}
]
the map returns an array of strings like: `[{ ... }
,`{...}]`` the final output includes commas between each { .. }, {...}, {...}best-lifeguard-91445
05/21/2020, 7:11 PMbest-lifeguard-91445
05/21/2020, 7:13 PM${x}
)
blah,blah
best-lifeguard-91445
05/21/2020, 7:17 PMtoString()
method which by default joins the returned array by map
with a ,
.wonderful-dog-9045
05/21/2020, 7:29 PMPolicyDocument
object instead.wonderful-dog-9045
05/21/2020, 7:29 PMwonderful-dog-9045
05/21/2020, 7:30 PMPolicyArgs
and RolePolicyArgs
accept inputs string
or PolicyDocument
s . All the documetnation examples use strings.wonderful-dog-9045
05/21/2020, 7:30 PMPolicyDocument
s are much easier to deal withwonderful-dog-9045
05/21/2020, 7:31 PMbest-lifeguard-91445
05/21/2020, 7:31 PMwonderful-dog-9045
05/21/2020, 7:32 PMwonderful-dog-9045
05/21/2020, 7:32 PMwonderful-dog-9045
05/21/2020, 7:32 PMbest-lifeguard-91445
05/21/2020, 7:33 PMbest-lifeguard-91445
05/21/2020, 7:33 PMwonderful-dog-9045
05/21/2020, 7:34 PMimport { PolicyDocument } from "@pulumi/aws/iam"
or
import { iam } from "@pulumi/aws"
-> iam.PolicyDocument
best-lifeguard-91445
05/21/2020, 7:36 PMbest-lifeguard-91445
05/21/2020, 7:37 PMbest-lifeguard-91445
05/21/2020, 7:46 PMbest-lifeguard-91445
05/21/2020, 7:52 PMwonderful-dog-9045
05/21/2020, 8:06 PMJSON.stringify
should do the jobwonderful-dog-9045
05/21/2020, 8:07 PMpulumi.output(policyDocument).apply((doc) => JSON.stringify(doc, null, 2))
best-lifeguard-91445
05/21/2020, 8:10 PM