Home

Awesome

<!-- markdownlint-disable -->

<a href="https://cpco.io/homepage"><img src=".github/banner.png?raw=true" alt="Project Banner"/></a><br/> <p align="right"> <a href="https://github.com/cloudposse-terraform-components/aws-datadog-logs-archive/releases/latest"><img src="https://img.shields.io/github/release/cloudposse-terraform-components/aws-datadog-logs-archive.svg?style=for-the-badge" alt="Latest Release"/></a><a href="https://slack.cloudposse.com"><img src="https://slack.cloudposse.com/for-the-badge.svg" alt="Slack Community"/></a></p>

<!-- markdownlint-restore --> <!-- ** DO NOT EDIT THIS FILE ** ** This file was automatically generated by the `cloudposse/build-harness`. ** 1) Make all changes to `README.yaml` ** 2) Run `make init` (you only need to do this once) ** 3) Run`make readme` to rebuild this file. ** ** (We maintain HUNDREDS of open source projects. This is how we maintain our sanity.) ** -->

This component is responsible for provisioning Datadog Log Archives. It creates a single log archive pipeline for each AWS account. If the catchall flag is set, it creates a catchall archive within the same S3 bucket.

Each log archive filters for the tag env:$env where $env is the environment/account name (ie sbx, prd, tools, etc), as well as any tags identified in the additional_tags key. The catchall archive, as the name implies, filters for '*'.

A second bucket is created for cloudtrail, and a cloudtrail is configured to monitor the log archive bucket and log activity to the cloudtrail bucket. To forward these cloudtrail logs to datadog, the cloudtrail bucket's id must be added to the s3_buckets key for our datadog-lambda-forwarder component.

Both buckets support object lock, with overridable defaults of COMPLIANCE mode with a duration of 7 days.

Prerequisites

Issues, Gotchas, Good-to-Knows

Destroy/reprovision process

Because of the protections for S3 buckets, if we want to destroy/replace our bucket, we need to do so in two passes or destroy the bucket manually and then use terraform to clean up the rest. If reprovisioning a recently provisioned bucket, the two-pass process works well. If the bucket has a full day or more of logs, though, deleting it manually first will avoid terraform timeouts, and then the terraform process can be used to clean up everything else.

Two step process to destroy via terraform

Usage

Stack Level: Global

Here's an example snippet for how to use this component. It's suggested to apply this component to all accounts from which Datadog receives logs.

components:
  terraform:
    datadog-logs-archive:
      settings:
        spacelift:
          workspace_enabled: true
      vars:
        enabled: true
  #       additional_query_tags:
  #         - "forwardername:*-dev-datadog-lambda-forwarder-logs"
  #         - "account:123456789012"

Requirements

NameVersion
terraform>= 0.13.0
aws>= 2.0
datadog>= 3.3.0
local>= 1.3

Providers

NameVersion
aws>= 2.0
datadog>= 3.7.0
http>= 2.1.0

Modules

NameSourceVersion
cloudtrailcloudposse/cloudtrail/aws0.21.0
cloudtrail_s3_bucketcloudposse/cloudtrail-s3-bucket/aws0.23.1
iam_roles../account-map/modules/iam-rolesn/a
s3_bucketcloudposse/s3-bucket/aws0.46.0
thiscloudposse/label/null0.25.0

Resources

NameType
aws_caller_identity.currentdata source
aws_partition.currentdata source
aws_ssm_parameter.datadog_api_keydata source
aws_ssm_parameter.datadog_app_keydata source
aws_ssm_parameter.datadog_aws_role_namedata source
aws_ssm_parameter.datadog_external_iddata source
datadog_logs_archive.catchall_archiveresource
datadog_logs_archive.logs_archiveresource
http.current_orderdata source

Inputs

NameDescriptionTypeDefaultRequired
additional_query_tagsAdditional tags to include in query for logs for this archivelist[]no
catchallSet to true to enable a catchall for logs unmatched by any queries. This should only be used in one environment/accountboolfalseno
datadog_aws_account_idThe AWS account ID Datadog's integration servers use for all integrationsstring464622532012no
enable_glacier_transitionEnable/disable transition to glacier. Has no effect unless lifecycle_rules_enabled set to truebooltrueno
glacier_transition_daysNumber of days after which to transition objects to glacier storagenumber365no
lifecycle_rules_enabledEnable/disable lifecycle management rules for s3 objectsbooltrueno
object_lock_days_archiveSet duration of archive bucket object locknumber7yes
object_lock_days_cloudtrailSet duration of cloudtrail bucket object locknumber7yes
object_lock_mode_archiveSet mode of archive bucket object lockstringCOMPLIANCEyes
object_lock_mode_cloudtrailSet mode of cloudtrail bucket object lockstringCOMPLIANCEyes
s3_force_destroySet to true to delete non-empty buckets when enabled is set to falseboolfalsefor destroy only

Outputs

NameDescription
archive_idThe ID of the environment-specific log archive
bucket_arnThe ARN of the bucket used for log archive storage
bucket_domain_nameThe FQDN of the bucket used for log archive storage
bucket_idThe ID (name) of the bucket used for log archive storage
bucket_regionThe region of the bucket used for log archive storage
cloudtrail_bucket_arnThe ARN of the bucket used for cloudtrail log storage
cloudtrail_bucket_domain_nameThe FQDN of the bucket used for cloudtrail log storage
cloudtrail_bucket_idThe ID (name) of the bucket used for cloudtrail log storage
catchall_idThe ID of the catchall log archive

References


[!NOTE] This project is part of Cloud Posse's comprehensive "SweetOps" approach towards DevOps.

<details><summary><strong>Learn More</strong></summary>

It's 100% Open Source and licensed under the APACHE2.

</details>

<a href="https://cloudposse.com/readme/header/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse-terraform-components/aws-datadog-logs-archive&utm_content=readme_header_link"><img src="https://cloudposse.com/readme/header/img"/></a>

Related Projects

Check out these related projects.

✨ Contributing

This project is under active development, and we encourage contributions from our community. Many thanks to our outstanding contributors:

<a href="https://github.com/cloudposse-terraform-components/aws-datadog-logs-archive/graphs/contributors"> <img src="https://contrib.rocks/image?repo=cloudposse-terraform-components/aws-datadog-logs-archive&max=24" /> </a>

πŸ› Bug Reports & Feature Requests

Please use the issue tracker to report any bugs or file feature requests.

πŸ’» Developing

If you are interested in being a contributor and want to get involved in developing this project or help out with Cloud Posse's other projects, we would love to hear from you! Hit us up in Slack, in the #cloudposse channel.

In general, PRs are welcome. We follow the typical "fork-and-pull" Git workflow.

  1. Review our Code of Conduct and Contributor Guidelines.
  2. Fork the repo on GitHub
  3. Clone the project to your own machine
  4. Commit changes to your own branch
  5. Push your work back up to your fork
  6. Submit a Pull Request so that we can review your changes

NOTE: Be sure to merge the latest changes from "upstream" before making a pull request!

🌎 Slack Community

Join our Open Source Community on Slack. It's FREE for everyone! Our "SweetOps" community is where you get to talk with others who share a similar vision for how to rollout and manage infrastructure. This is the best place to talk shop, ask questions, solicit feedback, and work together as a community to build totally sweet infrastructure.

πŸ“° Newsletter

Sign up for our newsletter and join 3,000+ DevOps engineers, CTOs, and founders who get insider access to the latest DevOps trends, so you can always stay in the know. Dropped straight into your Inbox every week β€” and usually a 5-minute read.

πŸ“† Office Hours <a href="https://cloudposse.com/office-hours?utm_source=github&utm_medium=readme&utm_campaign=cloudposse-terraform-components/aws-datadog-logs-archive&utm_content=office_hours"><img src="https://img.cloudposse.com/fit-in/200x200/https://cloudposse.com/wp-content/uploads/2019/08/Powered-by-Zoom.png" align="right" /></a>

Join us every Wednesday via Zoom for your weekly dose of insider DevOps trends, AWS news and Terraform insights, all sourced from our SweetOps community, plus a live Q&A that you can’t find anywhere else. It's FREE for everyone!

About

This project is maintained by <a href="https://cpco.io/homepage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse-terraform-components/aws-datadog-logs-archive&utm_content=">Cloud Posse, LLC</a>. <a href="https://cpco.io/homepage?utm_source=github&utm_medium=readme&utm_campaign=cloudposse-terraform-components/aws-datadog-logs-archive&utm_content="><img src="https://cloudposse.com/logo-300x69.svg" align="right" /></a>

We are a DevOps Accelerator for funded startups and enterprises. Use our ready-to-go terraform architecture blueprints for AWS to get up and running quickly. We build it with you. You own everything. Your team wins. Plus, we stick around until you succeed.

<a href="https://cpco.io/commercial-support?utm_source=github&utm_medium=readme&utm_campaign=cloudposse-terraform-components/aws-datadog-logs-archive&utm_content=commercial_support"><img alt="Learn More" src="https://img.shields.io/badge/learn%20more-success.svg?style=for-the-badge"/></a>

Your team can operate like a pro today.

Ensure that your team succeeds by using our proven process and turnkey blueprints. Plus, we stick around until you succeed.

<details> <summary>πŸ“š <strong>See What's Included</strong></summary> </details>

<a href="https://cloudposse.com/readme/commercial-support/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse-terraform-components/aws-datadog-logs-archive&utm_content=readme_commercial_support_link"><img src="https://cloudposse.com/readme/commercial-support/img"/></a>

License

<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=for-the-badge" alt="License"></a>

<details> <summary>Preamble to the Apache License, Version 2.0</summary> <br/> <br/>
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
</details>

Trademarks

All other trademarks referenced herein are the property of their respective owners.

Copyright Β© 2017-2024 Cloud Posse, LLC

<a href="https://cloudposse.com/readme/footer/link?utm_source=github&utm_medium=readme&utm_campaign=cloudposse-terraform-components/aws-datadog-logs-archive&utm_content=readme_footer_link"><img alt="README footer" src="https://cloudposse.com/readme/footer/img"/></a>

<img alt="Beacon" width="0" src="https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse-terraform-components/aws-datadog-logs-archive?pixel&cs=github&cm=readme&an=aws-datadog-logs-archive"/>