diff --git a/semantic_conventions/resource/cloud_provider/aws/ecs.yaml b/semantic_conventions/resource/cloud_provider/aws/ecs.yaml
new file mode 100644
index 00000000000..543639c4c81
--- /dev/null
+++ b/semantic_conventions/resource/cloud_provider/aws/ecs.yaml
@@ -0,0 +1,38 @@
+groups:
+ - id: aws.ecs
+ prefix: aws.ecs
+ brief: >
+ Resources used by AWS Elastic Container Service (ECS).
+ attributes:
+ - id: container.arn
+ type: string
+ brief: >
+ The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).
+ examples: ['arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9']
+ - id: cluster.arn
+ type: string
+ brief: >
+ The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).
+ examples: ['arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster']
+ - id: launchtype
+ type:
+ allow_custom_values: false
+ members:
+ - id: ec2
+ value: "EC2"
+ - id: fargate
+ value: "Fargate"
+ brief: >
+ The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.
+ examples: ['EC2', 'Fargate']
+ - id: task.arn
+ type: string
+ brief: >
+ The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).
+ examples: ['arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b']
+ - id: task.family
+ type: string
+ brief: >
+ The task definition family this task definition is a member of.
+ examples: ['opentelemetry-family']
+
diff --git a/semantic_conventions/resource/cloud_provider/aws/logs.yaml b/semantic_conventions/resource/cloud_provider/aws/logs.yaml
new file mode 100644
index 00000000000..d437f2fe75d
--- /dev/null
+++ b/semantic_conventions/resource/cloud_provider/aws/logs.yaml
@@ -0,0 +1,38 @@
+groups:
+ - id: aws.log
+ prefix: aws.log
+ brief: >
+ Resources specific to Amazon Web Services.
+ attributes:
+ - id: group.names
+ type: string[]
+ brief: >
+ The name(s) of the AWS log group(s) an application is writing to.
+ examples: ['/aws/lambda/my-function', 'opentelemetry-service']
+ note: >
+ Multiple log groups must be supported for cases like multi-container applications,
+ where a single application has sidecar containers, and each write to their own log
+ group.
+ - id: group.arns
+ type: string[]
+ brief: >
+ The Amazon Resource Name(s) (ARN) of the AWS log group(s).
+ examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*']
+ note: >
+ See the
+ [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).
+ - id: stream.names
+ type: string[]
+ brief: >
+ The name(s) of the AWS log stream(s) an application is writing to.
+ examples: ['logs/main/10838bed-421f-43ef-870a-f43feacbbb5b']
+ - id: stream.arns
+ type: string[]
+ brief: >
+ The ARN(s) of the AWS log stream(s).
+ examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b']
+ note: >
+ See the
+ [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).
+ One log group can contain several log streams, so these ARNs necessarily identify both a log
+ group and a log stream.
diff --git a/specification/resource/semantic_conventions/README.md b/specification/resource/semantic_conventions/README.md
index a7073284046..24b98e93952 100644
--- a/specification/resource/semantic_conventions/README.md
+++ b/specification/resource/semantic_conventions/README.md
@@ -135,3 +135,14 @@ Attributes defining a running environment (e.g. Operating System, Cloud, Data Ce
Version attributes, such as `service.version`, are values of type `string`. They are
the exact version used to identify an artifact. This may be a semantic version, e.g., `1.2.3`, git hash, e.g.,
`8ae73a`, or an arbitrary version string, e.g., `0.1.2.20210101`, whatever was used when building the artifact.
+
+## Cloud-Provider-Specific Attributes
+
+Attributes that are only applicable to resources from a specific cloud provider. Currently, these
+resources can only be defined for providers listed as a valid `cloud.provider` in
+[Cloud](./cloud.md) and below. Provider-specific attributes all reside in the `cloud_provider` directory.
+Valid cloud providers are:
+
+- [Amazon Web Services](https://aws.amazon.com/) ([`aws`](cloud_provider/aws/README.md))
+- [Google Cloud Platform](https://cloud.google.com/) (`gcp`)
+- [Microsoft Azure](https://azure.microsoft.com/) (`azure`)
diff --git a/specification/resource/semantic_conventions/cloud_provider/aws/README.md b/specification/resource/semantic_conventions/cloud_provider/aws/README.md
new file mode 100644
index 00000000000..136037065b3
--- /dev/null
+++ b/specification/resource/semantic_conventions/cloud_provider/aws/README.md
@@ -0,0 +1,19 @@
+# AWS Semantic Conventions
+
+This directory defines standards for resource attributes that only apply to Amazon
+Web Services (AWS) resources. If an attribute could apply to resources from more than one cloud
+provider (like account ID, operating system, etc), it belongs in the parent
+`semantic_conventions` directory.
+
+## Generic AWS Attributes
+
+Attributes that relate to AWS or use AWS-specific terminology, but are used by several
+services within AWS or are abstracted away from any particular service:
+
+- [AWS Logs](./logs.md)
+
+## Services
+
+Attributes that relate to an individual AWS service:
+
+- [Elastic Container Service](./ecs.md)
diff --git a/specification/resource/semantic_conventions/cloud_provider/aws/ecs.md b/specification/resource/semantic_conventions/cloud_provider/aws/ecs.md
new file mode 100644
index 00000000000..37422d2c111
--- /dev/null
+++ b/specification/resource/semantic_conventions/cloud_provider/aws/ecs.md
@@ -0,0 +1,22 @@
+# AWS ECS
+
+**type:** `aws.ecs`
+
+**Description:** Resources used by AWS Elastic Container Service (ECS).
+
+
+| Attribute | Type | Description | Example | Required |
+|---|---|---|---|---|
+| `aws.ecs.container.arn` | string | The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). | `arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9` | No |
+| `aws.ecs.cluster.arn` | string | The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). | `arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster` | No |
+| `aws.ecs.launchtype` | string enum | The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. | `EC2`
`Fargate` | No |
+| `aws.ecs.task.arn` | string | The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). | `arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b` | No |
+| `aws.ecs.task.family` | string | The task definition family this task definition is a member of. | `opentelemetry-family` | No |
+
+`aws.ecs.launchtype` MUST be one of the following:
+
+| Value | Description |
+|---|---|
+| `EC2` | ec2 |
+| `Fargate` | fargate |
+
diff --git a/specification/resource/semantic_conventions/cloud_provider/aws/logs.md b/specification/resource/semantic_conventions/cloud_provider/aws/logs.md
new file mode 100644
index 00000000000..5973349ea26
--- /dev/null
+++ b/specification/resource/semantic_conventions/cloud_provider/aws/logs.md
@@ -0,0 +1,20 @@
+# AWS Logs
+
+**Type:** `aws.log`
+
+**Description:** Log attributes for Amazon Web Services.
+
+
+| Attribute | Type | Description | Example | Required |
+|---|---|---|---|---|
+| `aws.log.group.names` | string[] | The name(s) of the AWS log group(s) an application is writing to. [1] | `/aws/lambda/my-function`
`opentelemetry-service` | No |
+| `aws.log.group.arns` | string[] | The Amazon Resource Name(s) (ARN) of the AWS log group(s). [2] | `arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*` | No |
+| `aws.log.stream.names` | string[] | The name(s) of the AWS log stream(s) an application is writing to. | `logs/main/10838bed-421f-43ef-870a-f43feacbbb5b` | No |
+| `aws.log.stream.arns` | string[] | The ARN(s) of the AWS log stream(s). [3] | `arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b` | No |
+
+**[1]:** Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.
+
+**[2]:** See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).
+
+**[3]:** See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.
+