v2_aws_integration_CreateAWSAccount/
v2_aws-integration_CreateAWSAccount.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_aws_integration::AWSIntegrationAPI;
4use datadog_api_client::datadogV2::model::AWSAccountCreateRequest;
5use datadog_api_client::datadogV2::model::AWSAccountCreateRequestAttributes;
6use datadog_api_client::datadogV2::model::AWSAccountCreateRequestData;
7use datadog_api_client::datadogV2::model::AWSAccountPartition;
8use datadog_api_client::datadogV2::model::AWSAccountType;
9use datadog_api_client::datadogV2::model::AWSAuthConfig;
10use datadog_api_client::datadogV2::model::AWSAuthConfigKeys;
11use datadog_api_client::datadogV2::model::AWSLambdaForwarderConfig;
12use datadog_api_client::datadogV2::model::AWSLambdaForwarderConfigLogSourceConfig;
13use datadog_api_client::datadogV2::model::AWSLogSourceTagFilter;
14use datadog_api_client::datadogV2::model::AWSLogsConfig;
15use datadog_api_client::datadogV2::model::AWSMetricsConfig;
16use datadog_api_client::datadogV2::model::AWSNamespaceTagFilter;
17use datadog_api_client::datadogV2::model::AWSResourcesConfig;
18use datadog_api_client::datadogV2::model::AWSTracesConfig;
19
20#[tokio::main]
21async fn main() {
22 let body = AWSAccountCreateRequest::new(AWSAccountCreateRequestData::new(
23 AWSAccountCreateRequestAttributes::new(
24 AWSAuthConfig::AWSAuthConfigKeys(Box::new(
25 AWSAuthConfigKeys::new("AKIAIOSFODNN7EXAMPLE".to_string())
26 .secret_access_key("wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY".to_string()),
27 )),
28 "123456789012".to_string(),
29 AWSAccountPartition::AWS,
30 )
31 .account_tags(Some(vec!["key:value".to_string()]))
32 .logs_config(
33 AWSLogsConfig::new().lambda_forwarder(
34 AWSLambdaForwarderConfig::new()
35 .lambdas(vec![
36 "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder"
37 .to_string(),
38 ])
39 .log_source_config(AWSLambdaForwarderConfigLogSourceConfig::new().tag_filters(
40 vec![
41 AWSLogSourceTagFilter::new()
42 .source("s3".to_string())
43 .tags(Some(vec!["test:test".to_string()]))
44 ],
45 ))
46 .sources(vec!["s3".to_string()]),
47 ),
48 )
49 .metrics_config(
50 AWSMetricsConfig::new()
51 .automute_enabled(true)
52 .collect_cloudwatch_alarms(true)
53 .collect_custom_metrics(true)
54 .enabled(true)
55 .tag_filters(vec![AWSNamespaceTagFilter::new()
56 .namespace("AWS/EC2".to_string())
57 .tags(Some(vec!["key:value".to_string()]))]),
58 )
59 .resources_config(
60 AWSResourcesConfig::new()
61 .cloud_security_posture_management_collection(false)
62 .extended_collection(false),
63 )
64 .traces_config(AWSTracesConfig::new()),
65 AWSAccountType::ACCOUNT,
66 ));
67 let configuration = datadog::Configuration::new();
68 let api = AWSIntegrationAPI::with_config(configuration);
69 let resp = api.create_aws_account(body).await;
70 if let Ok(value) = resp {
71 println!("{:#?}", value);
72 } else {
73 println!("{:#?}", resp.unwrap_err());
74 }
75}