in source/infrastructure/forecast/forecast/downloader.py [0:0]
def _create_downloader(self):
downloader = UrlDownloader(
self.parent,
f"{self.name}Downloader",
destination=Location(
bucket_name=self.destination.value_as_string,
object_key=self.destination_key,
),
source_url=self.url.parameter.value_as_string,
source_bucket=self.bucket.parameter.value_as_string,
source_key=self.key.parameter.value_as_string,
scheme=self.scheme.parameter.value_as_string,
)
policy = iam.Policy(
self.parent,
f"{downloader.name}S3AccessPolicy",
document=iam.PolicyDocument(
statements=[
iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=["s3:GetObject"],
resources=[
f"arn:{Aws.PARTITION}:s3:::{self.bucket.parameter.value_as_string}/{self.key.parameter.value_as_string}"
],
)
]
),
)
policy.attach_to_role(downloader.function.role)
Aspects.of(policy).add(ConditionalResources(self.bucket.condition))
return downloader