astonishing-dinner-89046
07/19/2021, 8:02 PMregion = aws.get_region()
user_data = f"""
#!/bin/bash
sudo systemctl start docker
$(aws ecr get-login --no-include-email --region {region})
docker pull {ecr.repository_url}:latest
~ userData: "88b7a8609501c5a4f07efd83f5a4c10be14d0405" => "\n#!/bin/bash\nsudo systemctl start docker\n$(aws ecr get-login --no-include-email --region <pulumi_aws.get_region.AwaitableGetRegionResult object at 0x10a8adb20>)\ndocker pull <pulumi.output.Output object at 0x10af258b0>:latest
prehistoric-london-9917
07/19/2021, 8:08 PMapply
to wait for the region response. And I think region
will be an object (it is in Typescript), so you’ll probably want something like:
region = pulumi.output(aws.get_region()).name
If that doesn’t work, try:
region = aws.get_region()
user_data = region.apply(lambda r: f"""
#!/bin/bash
sudo systemctl start docker
$(aws ecr get-login --no-include-email --region {r.name})
docker pull {ecr.repository_url}:latest""")
You may need the same thing for the repository URL, in which case you may want to use `all`: https://www.pulumi.com/docs/intro/concepts/inputs-outputs/#allbillowy-army-68599
07/19/2021, 8:10 PMastonishing-dinner-89046
07/19/2021, 8:17 PMregion = aws.get_region()
region_id = region.id
# Convert the userdata into Base64
message = Output.all(r=region_id, e=ecr_endpoint) \
.apply(lambda args: f"""
#!/bin/bash
sudo systemctl start docker
$(aws ecr get-login --no-include-email --region {args['r']})
docker pull {args['e']}:latest
docker run --rm --name "xxxxx-ingest-large" -e PYTHONPATH=/app/myapp {args['e']}:latest
distributed-ingest -ephemeral -type medium && sudo shutdown now
""")
message_bytes = message.encode('utf-8')
base64_bytes = base64.b64encode(message_bytes)
base64_userdata = base64_bytes.decode('utf-8')
File "./__main__.py", line 342, in <module>
message_bytes = message.encode('utf-8')
TypeError: 'Output' object is not callable
error: an unhandled error occurred: Program exited with non-zero exit code: 1
billowy-army-68599
07/22/2021, 11:23 PMastonishing-dinner-89046
07/22/2021, 11:59 PMmessage = Output.all(r=region_id, e=ecr_endpoint) \
.apply(base64.b64encode(lambda args: f"""
#!/bin/bash
sudo systemctl start docker
$(aws ecr get-login --no-include-email --region {args['r']})
docker pull {args['e']}:latest
docker run --rm --name "xxxxx-ingest-large" -e PYTHONPATH=/app/myapp {args['e']}:latest
distributed-ingest -ephemeral -type medium && sudo shutdown now
"""))
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'function'
error: an unhandled error occurred: Program exited with non-zero exit code: 1
billowy-army-68599
07/23/2021, 12:00 AMbase64.b64encode(f"""string""")
astonishing-dinner-89046
07/23/2021, 12:15 AMFile "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
error: an unhandled error occurred: Program exited with non-zero exit code: 1
billowy-army-68599
07/23/2021, 12:18 AMbase64.b64encode(f"""string""".encode('utf-8'))
astonishing-dinner-89046
07/23/2021, 12:33 AMbase64.b64encode(f"""string""".encode('utf-8')).decode('utf-8'))