in 4-serverless-cicd-stack/static-service-cicd/static_cicd/static_cicd_stack.py [0:0]
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# The code that defines your stack goes here
base_api = _apigw.RestApi(self, 'PetclinicApiGatewayWithCors')
api_resource = base_api.root.add_resource('api')
self.add_cors_options(api_resource)
website_bucket = _s3.Bucket(self, 'PetclinicWebsite',
website_index_document='index.html',
public_read_access=True,
removal_policy=core.RemovalPolicy.DESTROY
)
code = _commit.Repository(self, 'ServerlessCode',
repository_name='spring-petclinic-static-resource'
)
build_project = _build.PipelineProject(self, 'StaticWebBuild',
build_spec=_build.BuildSpec.from_object({
'version': 0.2,
'phases': {
'install': {
'runtime-versions': {
'java': 'openjdk8'
},
'commands': []
},
'build': {
'commands': [
'mv scripts/config.js scripts/config.js.origin',
'sed -e "s,http://localhost:8081/,$API_ENDPOINT,g" scripts/config.js.origin > scripts/config.js'
]
},
},
'artifacts': {
'files': '**/*'
},
}),
environment_variables={'API_ENDPOINT': _build.BuildEnvironmentVariable(value=base_api.url)},
environment=_build.BuildEnvironment(
build_image=_build.LinuxBuildImage.STANDARD_2_0)
)
source_output = _pipeline.Artifact('SourceOutput')
build_output = _pipeline.Artifact('BuildOutput')
pipline = _pipeline.Pipeline(self, 'ServerlessPipeline',
stages=[
{
'stageName': 'Source',
'actions': [_action.CodeCommitSourceAction(
action_name='CodeCommit_Source',
repository=code,
output=source_output
)]
},{
'stageName': 'Build',
'actions':[_action.CodeBuildAction(
action_name='CodeBuild_Static',
project=build_project,
input=source_output,
outputs=[build_output]
)]
},{
'stageName': 'Deploy',
'actions': [_action.S3DeployAction(
action_name='Web_Static_Deploy',
input=build_output,
bucket=website_bucket
)]
}]
)
core.CfnOutput(self, 'PetclinicApiGatewayWithCorsId', export_name='PetclinicApiGatewayWithCorsId', value=base_api.rest_api_id)
core.CfnOutput(self, "PetclinicWebsiteUrl",export_name="PetclinicWebsiteUrl",value=website_bucket.bucket_website_url)