Getting Started
Relevant source files
The following files were used as context for generating this wiki page:
The Terraform AWS provider is a plugin for Terraform that enables the full lifecycle management of Amazon Web Services (AWS) resources. Maintained by the HashiCorp AWS Provider team, it allows users to define and provision AWS infrastructure using a high-level configuration language. This document provides an overview for both users looking to manage AWS resources and developers interested in contributing to the provider.
This provider is the work of thousands of contributors. For users, comprehensive documentation is available on the Terraform website. For developers, contribution guidelines are available to help you get started. If you believe you have found a security issue, please responsibly disclose it by contacting security@hashicorp.com.
Sources: README.md:13-16, README.md:20-22, README.md:31-33
Using the Provider
To use the provider, you declare it in your Terraform configuration files. Terraform then uses the provider plugin to interact with the AWS APIs to create, update, and delete resources as defined. The full documentation for using the provider and its resources is available on the official Terraform Registry.
Sources: README.md:13-14, README.md:25-27
The following diagram illustrates the basic interaction flow when using the Terraform AWS provider.
Sources: README.md:13-14
Provider Structure
The provider's codebase is organized into packages, where each package typically corresponds to a specific AWS service (e.g., FMS, Lambda, SFN). This modular structure is primarily of interest to contributors and maintainers, as it isolates the logic for each service.
Sources: internal/service/fms/README.md:3-4, internal/service/lambda/README.md:3-4, internal/service/sfn/README.md:3-4
This diagram shows the high-level package organization within the provider.
Example Service Packages
The table below lists a few example service packages within the provider and provides links to their respective resource documentation.
| Service | Example Resource Documentation Link | AWS SDK Link |
|---|---|---|
| FMS | fms_admin_account | AWS SDK for Go FMS |
| DMS | dms_certificate | AWS SDK for Go DMS |
| Lambda | lambda_alias | AWS SDK for Go Lambda |
| SFN | sfn_activity | AWS SDK for Go SFN |
Sources: internal/service/fms/README.md:10, internal/service/dms/README.md:10, internal/service/lambda/README.md:10, internal/service/sfn/README.md:10
Contributing to the Provider
Contributions to the provider are welcome. The process involves setting up the development environment, making changes, and submitting a pull request. All contributors are expected to adhere to the project's Code of Conduct.
Sources: README.md:31-33, providerlint/vendor/google.golang.org/appengine/CONTRIBUTING.md:37-41
Contribution Workflow
The general workflow for contributing code is as follows:
- Sign CLA: Before contributions can be accepted, you must sign a Contributor License Agreement (Individual or Corporate).
- Get Package: Use
go getto download the package source code. - Fork & Remote: Fork the repository on GitHub and add your fork as a remote to your local clone.
- Develop: Make your changes in a new branch.
- Test: Run the system tests using the
goapp testcommand. - Pull Request: Commit your changes and send a pull request. The first line of the commit message should be a one-line summary prefixed by the affected package.
Sources: providerlint/vendor/google.golang.org/appengine/CONTRIBUTING.md:3-16, providerlint/vendor/google.golang.org/appengine/CONTRIBUTING.md:24-26
This flowchart visualizes the contribution process.
Support and Community
Several resources are available for getting help, asking questions, and connecting with the community.
| Resource | Link |
|---|---|
| Forums | discuss.hashicorp.com |
| Chat | Gitter |
| Mailing List | Google Groups |
| Tutorials | learn.hashicorp.com |
| Documentation | terraform.io/docs/providers/aws |
Sources: README.md:6-11, README.md:26-27