diff --git a/.infrastructure/main.tf b/.infrastructure/main.tf index f46caee..65c11d9 100644 --- a/.infrastructure/main.tf +++ b/.infrastructure/main.tf @@ -25,6 +25,7 @@ module "cloudfront_s3_cdn" { stage = var.stage name = var.name parent_zone_id = var.parent_zone_id + dns_alias_enabled = true acm_certificate_arn = var.acm_certificate_arn use_regional_s3_endpoint = true origin_force_destroy = true diff --git a/.infrastructure/prod-eu-west-1.tfvars b/.infrastructure/prod-eu-west-1.tfvars index d6bcb23..5d1d64f 100644 --- a/.infrastructure/prod-eu-west-1.tfvars +++ b/.infrastructure/prod-eu-west-1.tfvars @@ -5,7 +5,7 @@ stage = "prod" profile = "admin" # cloudfront -acm_certificate_arn = "arn:aws:acm:us-east-1:745437999005:certificate/f510b1b0-f475-43c6-a217-e884b77a894d" +acm_certificate_arn = "arn:aws:acm:us-east-1:745437999005:certificate/11502ff4-7851-426f-92ac-27db7c44825f" parent_zone_id = "Z0511918V1SF3MCG22JU" aliases = ["onmyojideckbuilder.com"] allowed_origins = ["*.onmyojideckbuilder.com"] diff --git a/.infrastructure/terraform.tfstate.d/prod-eu-west-1/.terraform.tfstate.lock.info b/.infrastructure/terraform.tfstate.d/prod-eu-west-1/.terraform.tfstate.lock.info deleted file mode 100644 index 2a89841..0000000 --- a/.infrastructure/terraform.tfstate.d/prod-eu-west-1/.terraform.tfstate.lock.info +++ /dev/null @@ -1 +0,0 @@ -{"ID":"98905c4f-6035-74f7-7650-6a47316a4218","Operation":"OperationTypeApply","Info":"","Who":"dtomlinson@daniel-macbook.local","Version":"0.13.5","Created":"2021-03-18T00:59:02.31725Z","Path":"terraform.tfstate.d/prod-eu-west-1/terraform.tfstate"} \ No newline at end of file diff --git a/.infrastructure/terraform.tfstate.d/prod-eu-west-1/terraform.tfstate b/.infrastructure/terraform.tfstate.d/prod-eu-west-1/terraform.tfstate index e087d58..a8d3551 100644 --- a/.infrastructure/terraform.tfstate.d/prod-eu-west-1/terraform.tfstate +++ b/.infrastructure/terraform.tfstate.d/prod-eu-west-1/terraform.tfstate @@ -1,9 +1,33 @@ { "version": 4, "terraform_version": "0.13.5", - "serial": 14, + "serial": 41, "lineage": "baf13f49-a91e-4ef3-40f8-b010f53cf030", "outputs": { + "cf_arn": { + "value": "arn:aws:cloudfront::745437999005:distribution/E8811LTEVQX71", + "type": "string" + }, + "cf_domain_name": { + "value": "duzt5fbttumv4.cloudfront.net", + "type": "string" + }, + "cf_etag": { + "value": "EWX7K6JLLQ02T", + "type": "string" + }, + "cf_hosted_zone_id": { + "value": "Z2FDTNDATAQYW2", + "type": "string" + }, + "cf_id": { + "value": "E8811LTEVQX71", + "type": "string" + }, + "cf_status": { + "value": "Deployed", + "type": "string" + }, "s3_bucket": { "value": "prod-onmyojideckbuilder-origin", "type": "string" @@ -71,7 +95,7 @@ "schema_version": 0, "attributes": { "arn": "arn:aws:iam::745437999005:role/prod-onmyojideckbuilder-lambda", - "assume_role_policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"lambda.amazonaws.com\",\"edgelambda.amazonaws.com\"]},\"Action\":\"sts:AssumeRole\"}]}", + "assume_role_policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"edgelambda.amazonaws.com\",\"lambda.amazonaws.com\"]},\"Action\":\"sts:AssumeRole\"}]}", "create_date": "2021-03-18T00:54:31Z", "description": "", "force_detach_policies": false, @@ -133,7 +157,7 @@ "invoke_arn": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:745437999005:function:prod-onmyojideckbuilder-directory_indexes/invocations", "kms_key_arn": "", "last_modified": "2021-03-18T00:54:40.108+0000", - "layers": null, + "layers": [], "memory_size": 128, "publish": true, "qualified_arn": "arn:aws:lambda:us-east-1:745437999005:function:prod-onmyojideckbuilder-directory_indexes:1", @@ -159,7 +183,6 @@ "version": "1", "vpc_config": [] }, - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDB9fQ==", "dependencies": [ "aws_iam_policy.lambda_logging", "aws_iam_role.lambda_role", @@ -313,18 +336,165 @@ "schema_version": 0, "attributes": { "filename": null, - "id": "fe3f480e1db2aede6d6d5ec8f112356a914f3fe62dc64248e9a9ee28c0b51963", - "rendered": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"S3GetObjectForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2UDO80PGVO0I7\"\n }\n },\n {\n \"Sid\": \"S3ListBucketForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2UDO80PGVO0I7\"\n }\n },\n {\n \"Sid\": \"PublicRead\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": \"*\"\n }\n ]\n}", + "id": "541c995169040d9ea986cc60699d59e5d5514e3b475898df8051e5638f80277c", + "rendered": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"S3GetObjectForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3899P9Y5AOS3U\"\n }\n },\n {\n \"Sid\": \"S3ListBucketForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3899P9Y5AOS3U\"\n }\n },\n {\n \"Sid\": \"PublicRead\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": \"*\"\n }\n ]\n}", "template": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"S3GetObjectForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::${bucket_name}${origin_path}*\",\n \"Principal\": {\n \"AWS\": \"${cloudfront_origin_access_identity_iam_arn}\"\n }\n },\n {\n \"Sid\": \"S3ListBucketForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::${bucket_name}\",\n \"Principal\": {\n \"AWS\": \"${cloudfront_origin_access_identity_iam_arn}\"\n }\n },\n {\n \"Sid\": \"PublicRead\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": \"*\"\n }\n ]\n}", "vars": { "bucket_name": "prod-onmyojideckbuilder-origin", - "cloudfront_origin_access_identity_iam_arn": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2UDO80PGVO0I7", + "cloudfront_origin_access_identity_iam_arn": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3899P9Y5AOS3U", "origin_path": "/" } } } ] }, + { + "module": "module.cloudfront_s3_cdn", + "mode": "managed", + "type": "aws_cloudfront_distribution", + "name": "default", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "active_trusted_signers": { + "enabled": "false", + "items.#": "0" + }, + "aliases": [ + "onmyojideckbuilder.com" + ], + "arn": "arn:aws:cloudfront::745437999005:distribution/E8811LTEVQX71", + "cache_behavior": [], + "caller_reference": "terraform-20210318012218188400000002", + "comment": "Managed by Terraform", + "custom_error_response": [], + "default_cache_behavior": [ + { + "allowed_methods": [ + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT" + ], + "cached_methods": [ + "GET", + "HEAD" + ], + "compress": true, + "default_ttl": 60, + "field_level_encryption_id": "", + "forwarded_values": [ + { + "cookies": [ + { + "forward": "none", + "whitelisted_names": null + } + ], + "headers": [ + "Access-Control-Request-Headers", + "Access-Control-Request-Method", + "Origin" + ], + "query_string": false, + "query_string_cache_keys": null + } + ], + "lambda_function_association": [ + { + "event_type": "origin-request", + "include_body": false, + "lambda_arn": "arn:aws:lambda:us-east-1:745437999005:function:prod-onmyojideckbuilder-directory_indexes:1" + } + ], + "max_ttl": 31536000, + "min_ttl": 0, + "smooth_streaming": false, + "target_origin_id": "prod-onmyojideckbuilder", + "trusted_signers": [], + "viewer_protocol_policy": "redirect-to-https" + } + ], + "default_root_object": "index.html", + "domain_name": "duzt5fbttumv4.cloudfront.net", + "enabled": true, + "etag": "EWX7K6JLLQ02T", + "hosted_zone_id": "Z2FDTNDATAQYW2", + "http_version": "http2", + "id": "E8811LTEVQX71", + "in_progress_validation_batches": 0, + "is_ipv6_enabled": true, + "last_modified_time": "2021-03-18 01:22:20.572 +0000 UTC", + "logging_config": [ + { + "bucket": "prod-onmyojideckbuilder-logs.s3.amazonaws.com", + "include_cookies": false, + "prefix": "" + } + ], + "ordered_cache_behavior": [], + "origin": [ + { + "custom_header": [], + "custom_origin_config": [], + "domain_name": "prod-onmyojideckbuilder-origin.s3.eu-west-1.amazonaws.com", + "origin_id": "prod-onmyojideckbuilder", + "origin_path": "", + "s3_origin_config": [ + { + "origin_access_identity": "origin-access-identity/cloudfront/E3899P9Y5AOS3U" + } + ] + } + ], + "origin_group": [], + "price_class": "PriceClass_100", + "restrictions": [ + { + "geo_restriction": [ + { + "locations": null, + "restriction_type": "none" + } + ] + } + ], + "retain_on_delete": false, + "status": "Deployed", + "tags": { + "Description": "website to build and share onmyoji decks", + "Name": "prod-onmyojideckbuilder", + "Project": "onmyoji-deck-builder", + "Stage": "prod" + }, + "viewer_certificate": [ + { + "acm_certificate_arn": "arn:aws:acm:us-east-1:745437999005:certificate/11502ff4-7851-426f-92ac-27db7c44825f", + "cloudfront_default_certificate": false, + "iam_certificate_id": "", + "minimum_protocol_version": "TLSv1", + "ssl_support_method": "sni-only" + } + ], + "wait_for_deployment": true, + "web_acl_id": "" + }, + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==", + "dependencies": [ + "aws_lambda_function.directory_indexes", + "module.cloudfront_s3_cdn.aws_cloudfront_origin_access_identity.default", + "module.cloudfront_s3_cdn.aws_s3_bucket.origin", + "module.cloudfront_s3_cdn.data.aws_s3_bucket.selected", + "module.cloudfront_s3_cdn.module.logs.aws_s3_bucket.default" + ] + } + ] + }, { "module": "module.cloudfront_s3_cdn", "mode": "managed", @@ -336,13 +506,13 @@ "index_key": 0, "schema_version": 0, "attributes": { - "caller_reference": "terraform-20210318005431202400000001", - "cloudfront_access_identity_path": "origin-access-identity/cloudfront/E2UDO80PGVO0I7", + "caller_reference": "terraform-20210318012209443100000001", + "cloudfront_access_identity_path": "origin-access-identity/cloudfront/E3899P9Y5AOS3U", "comment": "prod-onmyojideckbuilder", - "etag": "E1TCA4Q1CA5VJS", - "iam_arn": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2UDO80PGVO0I7", - "id": "E2UDO80PGVO0I7", - "s3_canonical_user_id": "0cfcad41a6b0276d057a0ebf19d20c199a1506b2fff651979fa92da43f68347b1f60e881f157f22b76dde44b55009f31" + "etag": "E1OBPL8GJS1IFK", + "iam_arn": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3899P9Y5AOS3U", + "id": "E3899P9Y5AOS3U", + "s3_canonical_user_id": "c6ca7e493807b1f8d4d0384bd9afb42dd1fae658b306d8e2acb0953a4f7d8d8edb3a33810cf86f79c01990e91c97e112" }, "private": "bnVsbA==" } @@ -463,7 +633,7 @@ "attributes": { "bucket": "prod-onmyojideckbuilder-origin", "id": "prod-onmyojideckbuilder-origin", - "policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"S3GetObjectForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2UDO80PGVO0I7\"\n }\n },\n {\n \"Sid\": \"S3ListBucketForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2UDO80PGVO0I7\"\n }\n },\n {\n \"Sid\": \"PublicRead\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": \"*\"\n }\n ]\n}" + "policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"S3GetObjectForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3899P9Y5AOS3U\"\n }\n },\n {\n \"Sid\": \"S3ListBucketForCloudFront\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin\",\n \"Principal\": {\n \"AWS\": \"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3899P9Y5AOS3U\"\n }\n },\n {\n \"Sid\": \"PublicRead\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Resource\": \"arn:aws:s3:::prod-onmyojideckbuilder-origin/*\",\n \"Principal\": \"*\"\n }\n ]\n}" }, "private": "bnVsbA==", "dependencies": [ @@ -476,6 +646,132 @@ } ] }, + { + "module": "module.cloudfront_s3_cdn.module.dns", + "mode": "data", + "type": "aws_route53_zone", + "name": "default", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 0, + "attributes": { + "caller_reference": "481ca519-c2ac-4885-b585-8283334987f7", + "comment": "", + "id": "Z0511918V1SF3MCG22JU", + "linked_service_description": null, + "linked_service_principal": null, + "name": "onmyojideckbuilder.com.", + "name_servers": [ + "ns-1501.awsdns-59.org", + "ns-1652.awsdns-14.co.uk", + "ns-176.awsdns-22.com", + "ns-530.awsdns-02.net" + ], + "private_zone": false, + "resource_record_set_count": 3, + "tags": {}, + "vpc_id": null, + "zone_id": "Z0511918V1SF3MCG22JU" + } + } + ] + }, + { + "module": "module.cloudfront_s3_cdn.module.dns", + "mode": "managed", + "type": "aws_route53_record", + "name": "default", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 2, + "attributes": { + "alias": [ + { + "evaluate_target_health": false, + "name": "duzt5fbttumv4.cloudfront.net", + "zone_id": "Z2FDTNDATAQYW2" + } + ], + "allow_overwrite": false, + "failover_routing_policy": [], + "fqdn": "onmyojideckbuilder.com", + "geolocation_routing_policy": [], + "health_check_id": null, + "id": "Z0511918V1SF3MCG22JU_onmyojideckbuilder.com_A", + "latency_routing_policy": [], + "multivalue_answer_routing_policy": null, + "name": "onmyojideckbuilder.com", + "records": null, + "set_identifier": null, + "ttl": null, + "type": "A", + "weighted_routing_policy": [], + "zone_id": "Z0511918V1SF3MCG22JU" + }, + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", + "dependencies": [ + "aws_lambda_function.directory_indexes", + "module.cloudfront_s3_cdn.aws_cloudfront_distribution.default", + "module.cloudfront_s3_cdn.aws_cloudfront_origin_access_identity.default", + "module.cloudfront_s3_cdn.aws_s3_bucket.origin", + "module.cloudfront_s3_cdn.data.aws_s3_bucket.selected", + "module.cloudfront_s3_cdn.module.dns.data.aws_route53_zone.default", + "module.cloudfront_s3_cdn.module.logs.aws_s3_bucket.default" + ] + } + ] + }, + { + "module": "module.cloudfront_s3_cdn.module.dns", + "mode": "managed", + "type": "aws_route53_record", + "name": "ipv6", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "index_key": 0, + "schema_version": 2, + "attributes": { + "alias": [ + { + "evaluate_target_health": false, + "name": "duzt5fbttumv4.cloudfront.net", + "zone_id": "Z2FDTNDATAQYW2" + } + ], + "allow_overwrite": false, + "failover_routing_policy": [], + "fqdn": "onmyojideckbuilder.com", + "geolocation_routing_policy": [], + "health_check_id": null, + "id": "Z0511918V1SF3MCG22JU_onmyojideckbuilder.com_AAAA", + "latency_routing_policy": [], + "multivalue_answer_routing_policy": null, + "name": "onmyojideckbuilder.com", + "records": null, + "set_identifier": null, + "ttl": null, + "type": "AAAA", + "weighted_routing_policy": [], + "zone_id": "Z0511918V1SF3MCG22JU" + }, + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", + "dependencies": [ + "aws_lambda_function.directory_indexes", + "module.cloudfront_s3_cdn.aws_cloudfront_distribution.default", + "module.cloudfront_s3_cdn.aws_cloudfront_origin_access_identity.default", + "module.cloudfront_s3_cdn.aws_s3_bucket.origin", + "module.cloudfront_s3_cdn.data.aws_s3_bucket.selected", + "module.cloudfront_s3_cdn.module.dns.data.aws_route53_zone.default", + "module.cloudfront_s3_cdn.module.logs.aws_s3_bucket.default" + ] + } + ] + }, { "module": "module.cloudfront_s3_cdn.module.logs", "mode": "managed", diff --git a/.infrastructure/terraform.tfstate.d/prod-eu-west-1/terraform.tfstate.backup b/.infrastructure/terraform.tfstate.d/prod-eu-west-1/terraform.tfstate.backup new file mode 100644 index 0000000..a4820b7 --- /dev/null +++ b/.infrastructure/terraform.tfstate.d/prod-eu-west-1/terraform.tfstate.backup @@ -0,0 +1,157 @@ +{ + "version": 4, + "terraform_version": "0.13.5", + "serial": 28, + "lineage": "baf13f49-a91e-4ef3-40f8-b010f53cf030", + "outputs": {}, + "resources": [ + { + "mode": "data", + "type": "archive_file", + "name": "lambda_main", + "provider": "provider[\"registry.terraform.io/hashicorp/archive\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "excludes": null, + "id": "320d4868dd37d1674e98bd790b8a54b006838d04", + "output_base64sha256": "5EVmwQDkgGfYMpMXNaWHUz3cmb/dSssoWl8mM8o3aMs=", + "output_md5": "611fc9e8b494e4b399217f632b8e35ed", + "output_path": "./lambda/main.js.zip", + "output_sha": "320d4868dd37d1674e98bd790b8a54b006838d04", + "output_size": 601, + "source": [], + "source_content": null, + "source_content_filename": null, + "source_dir": null, + "source_file": "./lambda/main.js", + "type": "zip" + } + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_policy", + "name": "lambda_logging", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:iam::745437999005:policy/prod-onmyojideckbuilder-lambda_logging", + "description": "", + "id": "arn:aws:iam::745437999005:policy/prod-onmyojideckbuilder-lambda_logging", + "name": "prod-onmyojideckbuilder-lambda_logging", + "name_prefix": null, + "path": "/", + "policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": [\n \"logs:CreateLogGroup\",\n \"logs:CreateLogStream\",\n \"logs:PutLogEvents\"\n ],\n \"Resource\": \"arn:aws:logs:*:*:*\",\n \"Effect\": \"Allow\"\n }\n ]\n}\n" + }, + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_role", + "name": "lambda_role", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:iam::745437999005:role/prod-onmyojideckbuilder-lambda", + "assume_role_policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"lambda.amazonaws.com\",\"edgelambda.amazonaws.com\"]},\"Action\":\"sts:AssumeRole\"}]}", + "create_date": "2021-03-18T00:54:31Z", + "description": "", + "force_detach_policies": false, + "id": "prod-onmyojideckbuilder-lambda", + "max_session_duration": 3600, + "name": "prod-onmyojideckbuilder-lambda", + "name_prefix": null, + "path": "/", + "permissions_boundary": null, + "tags": { + "Description": "website to build and share onmyoji decks", + "Project": "onmyoji-deck-builder" + }, + "unique_id": "AROA23D4RF6OTBMEPSDVE" + }, + "private": "bnVsbA==" + } + ] + }, + { + "mode": "managed", + "type": "aws_iam_role_policy_attachment", + "name": "lambda_logging", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "id": "prod-onmyojideckbuilder-lambda-20210318005433729100000002", + "policy_arn": "arn:aws:iam::745437999005:policy/prod-onmyojideckbuilder-lambda_logging", + "role": "prod-onmyojideckbuilder-lambda" + }, + "private": "bnVsbA==", + "dependencies": [ + "aws_iam_policy.lambda_logging", + "aws_iam_role.lambda_role" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_lambda_function", + "name": "directory_indexes", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"].us_east_1", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:lambda:us-east-1:745437999005:function:prod-onmyojideckbuilder-directory_indexes", + "dead_letter_config": [], + "description": "", + "environment": [], + "file_system_config": [], + "filename": "./lambda/main.js.zip", + "function_name": "prod-onmyojideckbuilder-directory_indexes", + "handler": "main.handler", + "id": "prod-onmyojideckbuilder-directory_indexes", + "invoke_arn": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:745437999005:function:prod-onmyojideckbuilder-directory_indexes/invocations", + "kms_key_arn": "", + "last_modified": "2021-03-18T00:54:40.108+0000", + "layers": [], + "memory_size": 128, + "publish": true, + "qualified_arn": "arn:aws:lambda:us-east-1:745437999005:function:prod-onmyojideckbuilder-directory_indexes:1", + "reserved_concurrent_executions": -1, + "role": "arn:aws:iam::745437999005:role/prod-onmyojideckbuilder-lambda", + "runtime": "nodejs12.x", + "s3_bucket": null, + "s3_key": null, + "s3_object_version": null, + "source_code_hash": "5EVmwQDkgGfYMpMXNaWHUz3cmb/dSssoWl8mM8o3aMs=", + "source_code_size": 601, + "tags": { + "Description": "website to build and share onmyoji decks", + "Project": "onmyoji-deck-builder" + }, + "timeout": 3, + "timeouts": null, + "tracing_config": [ + { + "mode": "PassThrough" + } + ], + "version": "1", + "vpc_config": [] + } + } + ] + } + ] +} diff --git a/package.json b/package.json index c169eaf..79ebdc7 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", - "lint": "vue-cli-service lint" + "lint": "vue-cli-service lint", + "deploy": "aws s3 sync ./dist s3://prod-onmyojideckbuilder-origin --profile admin" }, "dependencies": { "core-js": "^3.6.5",