Module aws
This provider is a derived work of the Terraform Provider distributed under MPL 2.0. If you encounter a bug or missing feature, first check the
pulumi/pulumi-signalfxrepo; however, if that doesn’t turn up anything, please consult the sourceterraform-providers/terraform-provider-signalfxrepo.
Resources
Functions
Others
- ExternalIntegrationArgs
- ExternalIntegrationState
- GetServicesArgs
- GetServicesResult
- IntegrationArgs
- IntegrationState
- TokenIntegrationArgs
- TokenIntegrationState
Resources
Resource ExternalIntegration
class ExternalIntegration extends CustomResourceSignalFx AWS CloudWatch integrations using Role ARNs. For help with this integration see Connect to AWS CloudWatch.
NOTE When managing integrations you’ll need to use an admin token to authenticate the SignalFx provider.
WARNING This resource implements a part of a workflow. You must use it with
signalfx.aws.Integration. Check with SignalFx support for your realm’s AWS account id.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as signalfx from "@pulumi/signalfx";
const awsMyteamExtern = new signalfx.aws.ExternalIntegration("awsMyteamExtern", {});
const signalfxAssumePolicy = aws.iam.getPolicyDocument({
statement: [{
actions: ["sts:AssumeRole"],
principals: [{
type: "AWS",
identifiers: [awsMyteamExtern.signalfxAwsAccount],
}],
condition: [{
test: "StringEquals",
variable: "sts:ExternalId",
values: [awsMyteamExtern.externalId],
}],
}],
});
const awsSfxRole = new aws.iam.Role("awsSfxRole", {
description: "signalfx integration to read out data and send it to signalfxs aws account",
assumeRolePolicy: signalfxAssumePolicy.json,
});
const awsReadPermissions = new aws.iam.Policy("awsReadPermissions", {
description: "farts",
policy: `{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"dynamodb:ListTables",
"dynamodb:DescribeTable",
"dynamodb:ListTagsOfResource",
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:DescribeVolumes",
"ec2:DescribeReservedInstances",
"ec2:DescribeReservedInstancesModifications",
"ec2:DescribeTags",
"organizations:DescribeOrganization",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:DescribeAlarms",
"sqs:ListQueues",
"sqs:GetQueueAttributes",
"sqs:ListQueueTags",
"elasticmapreduce:ListClusters",
"elasticmapreduce:DescribeCluster",
"kinesis:ListShards",
"kinesis:ListStreams",
"kinesis:DescribeStream",
"kinesis:ListTagsForStream",
"rds:DescribeDBInstances",
"rds:ListTagsForResource",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeTags",
"elasticache:describeCacheClusters",
"redshift:DescribeClusters",
"lambda:GetAlias",
"lambda:ListFunctions",
"lambda:ListTags",
"autoscaling:DescribeAutoScalingGroups",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:GetBucketTagging",
"ecs:ListServices",
"ecs:ListTasks",
"ecs:DescribeTasks",
"ecs:DescribeServices",
"ecs:ListClusters",
"ecs:DescribeClusters",
"ecs:ListTaskDefinitions",
"ecs:ListTagsForResource",
"apigateway:GET",
"cloudfront:ListDistributions",
"cloudfront:ListTagsForResource",
"tag:GetResources",
"es:ListDomainNames",
"es:DescribeElasticsearchDomain"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
`,
});
const sfxReadAttach = new aws.iam.RolePolicyAttachment("sfx-read-attach", {
role: awsSfxRole.name,
policyArn: awsReadPermissions.arn,
});
const awsMyteam = new signalfx.aws.Integration("awsMyteam", {
enabled: true,
integrationId: awsMyteamExtern.id,
externalId: awsMyteamExtern.externalId,
roleArn: awsSfxRole.arn,
regions: ["us-east-1"],
pollRate: 300,
importCloudWatch: true,
enableAwsUsage: true,
});constructor
new ExternalIntegration(name: string, args?: ExternalIntegrationArgs, opts?: pulumi.CustomResourceOptions)Create a ExternalIntegration resource with the given unique name, arguments, and options.
nameThe unique name of the resource.argsThe arguments to use to populate this resource's properties.optsA bag of options that control this resource's behavior.
method get
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ExternalIntegrationState, opts?: pulumi.CustomResourceOptions): ExternalIntegrationGet an existing ExternalIntegration resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
method getProvider
getProvider(moduleMember: string): ProviderResource | undefinedmethod isInstance
public static isInstance(obj: any): obj is ExternalIntegrationReturns true if the given object is an instance of ExternalIntegration. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.
property externalId
public externalId: pulumi.Output<string>;The external ID to use with your IAM role and with signalfx.aws.Integration.
property id
id: Output<ID>;id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.
property name
public name: pulumi.Output<string>;The name of this integration
property namedToken
public namedToken: pulumi.Output<string | undefined>;A named token to use for ingest
property signalfxAwsAccount
public signalfxAwsAccount: pulumi.Output<string>;The AWS Account ARN to use with your policies/roles, provided by SignalFx.
property urn
urn: Output<URN>;urn is the stable logical URN used to distinctly address a resource, both before and after deployments.
Resource Integration
class Integration extends CustomResourceSignalFx AWS CloudWatch integrations. For help with this integration see Monitoring Amazon Web Services.
NOTE When managing integrations you’ll need to use an admin token to authenticate the SignalFx provider.
WARNING This resource implements a part of a workflow. You must use it with one of either
signalfx.aws.ExternalIntegrationorsignalfx.aws.TokenIntegration.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as signalfx from "@pulumi/signalfx";
// This resource returns an account id in `externalId`…
const awsMyteamExternal = new signalfx.aws.ExternalIntegration("awsMyteamExternal", {});
// Make yourself an AWS IAM role here, use `signalfx_aws_external_integration.aws_myteam_external.external_id`
const awsSfxRole = new aws.iam.Role("awsSfxRole", {});
// Stuff here that uses the external and account ID
const awsMyteam = new signalfx.aws.Integration("awsMyteam", {
enabled: true,
integrationId: awsMyteamExternal.id,
externalId: awsMyteamExternal.externalId,
roleArn: awsSfxRole.arn,
regions: ["us-east-1"],
pollRate: 300,
importCloudWatch: true,
enableAwsUsage: true,
custom_namespace_sync_rule: [{
defaultAction: "Exclude",
filterAction: "Include",
filterSource: "filter('code', '200')",
namespace: "fart",
}],
namespace_sync_rule: [{
defaultAction: "Exclude",
filterAction: "Include",
filterSource: "filter('code', '200')",
namespace: "AWS/EC2",
}],
});Service Names
NOTE You can use the data source “signalfx.aws.getServices” to specify all services.
constructor
new Integration(name: string, args: IntegrationArgs, opts?: pulumi.CustomResourceOptions)Create a Integration resource with the given unique name, arguments, and options.
nameThe unique name of the resource.argsThe arguments to use to populate this resource's properties.optsA bag of options that control this resource's behavior.
method get
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: IntegrationState, opts?: pulumi.CustomResourceOptions): IntegrationGet an existing Integration resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
method getProvider
getProvider(moduleMember: string): ProviderResource | undefinedmethod isInstance
public static isInstance(obj: any): obj is IntegrationReturns true if the given object is an instance of Integration. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.
property customCloudwatchNamespaces
public customCloudwatchNamespaces: pulumi.Output<string[] | undefined>;List of custom AWS CloudWatch namespaces to monitor. Custom namespaces contain custom metrics that you define in AWS; SignalFx imports the metrics so you can monitor them.
property customNamespaceSyncRules
public customNamespaceSyncRules: pulumi.Output<IntegrationCustomNamespaceSyncRule[] | undefined>;Each element controls the data collected by SignalFx for the specified namespace. Conflicts with the customCloudwatchNamespaces property.
property enableAwsUsage
public enableAwsUsage: pulumi.Output<boolean | undefined>;Flag that controls how SignalFx imports usage metrics from AWS to use with AWS Cost Optimizer. If true, SignalFx imports the metrics.
property enabled
public enabled: pulumi.Output<boolean>;Whether the integration is enabled.
property externalId
public externalId: pulumi.Output<string | undefined>;The externalId property from one of a signalfx.aws.ExternalIntegration or signalfx.aws.TokenIntegration
property id
id: Output<ID>;id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.
property importCloudWatch
public importCloudWatch: pulumi.Output<boolean | undefined>;Flag that controls how SignalFx imports Cloud Watch metrics. If true, SignalFx imports Cloud Watch metrics from AWS.
property integrationId
public integrationId: pulumi.Output<string>;The id of one of a signalfx.aws.ExternalIntegration or signalfx.aws.TokenIntegration.
property key
public key: pulumi.Output<string | undefined>;If you specify authMethod = \"SecurityToken\" in your request to create an AWS integration object, use this property to specify the key.
property namespaceSyncRules
public namespaceSyncRules: pulumi.Output<IntegrationNamespaceSyncRule[] | undefined>;Each element in the array is an object that contains an AWS namespace name and a filter that controls the data that SignalFx collects for the namespace. Conflicts with the services property. If you don’t specify either property, SignalFx syncs all data in all AWS namespaces.
property pollRate
public pollRate: pulumi.Output<number | undefined>;AWS poll rate (in seconds). One of 60 or 300.
property regions
public regions: pulumi.Output<string[] | undefined>;List of AWS regions that SignalFx should monitor.
property roleArn
public roleArn: pulumi.Output<string | undefined>;Role ARN that you add to an existing AWS integration object. Note: Ensure you use the arn property of your role, not the id!
property services
public services: pulumi.Output<string[] | undefined>;List of AWS services that you want SignalFx to monitor. Each element is a string designating an AWS service. Conflicts with namespaceSyncRule. See the documentation for Creating Integrations for valida values.
property token
public token: pulumi.Output<string | undefined>;Used with signalfx_aws_token_integration. Use this property to specify the token.
property urn
urn: Output<URN>;urn is the stable logical URN used to distinctly address a resource, both before and after deployments.
property useGetMetricDataMethod
public useGetMetricDataMethod: pulumi.Output<boolean | undefined>;Enable the use of Amazon’s GetMetricData for collecting metrics. Note that this requires the inclusion of the "cloudwatch:GetMetricData" permission.
Resource TokenIntegration
class TokenIntegration extends CustomResourceSignalFx AWS CloudWatch integrations using security tokens. For help with this integration see Connect to AWS CloudWatch.
NOTE When managing integrations you’ll need to use an admin token to authenticate the SignalFx provider.
WARNING This resource implements a part of a workflow. You must use it with
signalfx.aws.Integration.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as signalfx from "@pulumi/signalfx";
const awsMyteamToken = new signalfx.aws.TokenIntegration("awsMyteamToken", {});
// Make yourself an AWS IAM role here
const awsSfxRole = new aws.iam.Role("awsSfxRole", {});
// Stuff here that uses the external and account ID
const awsMyteam = new signalfx.aws.Integration("awsMyteam", {
enabled: true,
integrationId: awsMyteamToken.id,
token: "putYourTokenHere",
key: "putYourKeyHere",
regions: ["us-east-1"],
pollRate: 300,
importCloudWatch: true,
enableAwsUsage: true,
custom_namespace_sync_rule: [{
defaultAction: "Exclude",
filterAction: "Include",
filterSource: "filter('code', '200')",
namespace: "fart",
}],
namespace_sync_rule: [{
defaultAction: "Exclude",
filterAction: "Include",
filterSource: "filter('code', '200')",
namespace: "AWS/EC2",
}],
});constructor
new TokenIntegration(name: string, args?: TokenIntegrationArgs, opts?: pulumi.CustomResourceOptions)Create a TokenIntegration resource with the given unique name, arguments, and options.
nameThe unique name of the resource.argsThe arguments to use to populate this resource's properties.optsA bag of options that control this resource's behavior.
method get
public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: TokenIntegrationState, opts?: pulumi.CustomResourceOptions): TokenIntegrationGet an existing TokenIntegration resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
method getProvider
getProvider(moduleMember: string): ProviderResource | undefinedmethod isInstance
public static isInstance(obj: any): obj is TokenIntegrationReturns true if the given object is an instance of TokenIntegration. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.
property id
id: Output<ID>;id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.
property name
public name: pulumi.Output<string>;The name of this integration
property namedToken
public namedToken: pulumi.Output<string | undefined>;A named token to use for ingest
property signalfxAwsAccount
public signalfxAwsAccount: pulumi.Output<string>;The AWS Account ARN to use with your policies/roles, provided by SignalFx.
property tokenId
public tokenId: pulumi.Output<string>;The SignalFx-generated AWS token to use with an AWS integration.
property urn
urn: Output<URN>;urn is the stable logical URN used to distinctly address a resource, both before and after deployments.
Functions
Function getServices
getServices(args?: GetServicesArgs, opts?: pulumi.InvokeOptions): Promise<GetServicesResult>Use this data source to get a list of AWS service names.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as signalfx from "@pulumi/signalfx";
const awsServices = signalfx.aws.getServices({});
// Leaves out most of the integration bits, see the docs
// for signalfx.aws.Integration for more
const awsMyteam = new signalfx.aws.Integration("awsMyteam", {services: [awsServices.then(awsServices => awsServices.services)].map(__item => __item?.name)});Others
interface ExternalIntegrationArgs
interface ExternalIntegrationArgsThe set of arguments for constructing a ExternalIntegration resource.
property name
name?: pulumi.Input<string>;The name of this integration
property namedToken
namedToken?: pulumi.Input<string>;A named token to use for ingest
interface ExternalIntegrationState
interface ExternalIntegrationStateInput properties used for looking up and filtering ExternalIntegration resources.
property externalId
externalId?: pulumi.Input<string>;The external ID to use with your IAM role and with signalfx.aws.Integration.
property name
name?: pulumi.Input<string>;The name of this integration
property namedToken
namedToken?: pulumi.Input<string>;A named token to use for ingest
property signalfxAwsAccount
signalfxAwsAccount?: pulumi.Input<string>;The AWS Account ARN to use with your policies/roles, provided by SignalFx.
interface GetServicesArgs
interface GetServicesArgsA collection of arguments for invoking getServices.
property services
services?: GetServicesService[];interface GetServicesResult
interface GetServicesResultA collection of values returned by getServices.
property id
id: string;The provider-assigned unique ID for this managed resource.
property services
services?: GetServicesService[];interface IntegrationArgs
interface IntegrationArgsThe set of arguments for constructing a Integration resource.
property customCloudwatchNamespaces
customCloudwatchNamespaces?: pulumi.Input<pulumi.Input<string>[]>;List of custom AWS CloudWatch namespaces to monitor. Custom namespaces contain custom metrics that you define in AWS; SignalFx imports the metrics so you can monitor them.
property customNamespaceSyncRules
customNamespaceSyncRules?: pulumi.Input<pulumi.Input<IntegrationCustomNamespaceSyncRule>[]>;Each element controls the data collected by SignalFx for the specified namespace. Conflicts with the customCloudwatchNamespaces property.
property enableAwsUsage
enableAwsUsage?: pulumi.Input<boolean>;Flag that controls how SignalFx imports usage metrics from AWS to use with AWS Cost Optimizer. If true, SignalFx imports the metrics.
property enabled
enabled: pulumi.Input<boolean>;Whether the integration is enabled.
property externalId
externalId?: pulumi.Input<string>;The externalId property from one of a signalfx.aws.ExternalIntegration or signalfx.aws.TokenIntegration
property importCloudWatch
importCloudWatch?: pulumi.Input<boolean>;Flag that controls how SignalFx imports Cloud Watch metrics. If true, SignalFx imports Cloud Watch metrics from AWS.
property integrationId
integrationId: pulumi.Input<string>;The id of one of a signalfx.aws.ExternalIntegration or signalfx.aws.TokenIntegration.
property key
key?: pulumi.Input<string>;If you specify authMethod = \"SecurityToken\" in your request to create an AWS integration object, use this property to specify the key.
property namespaceSyncRules
namespaceSyncRules?: pulumi.Input<pulumi.Input<IntegrationNamespaceSyncRule>[]>;Each element in the array is an object that contains an AWS namespace name and a filter that controls the data that SignalFx collects for the namespace. Conflicts with the services property. If you don’t specify either property, SignalFx syncs all data in all AWS namespaces.
property pollRate
pollRate?: pulumi.Input<number>;AWS poll rate (in seconds). One of 60 or 300.
property regions
regions?: pulumi.Input<pulumi.Input<string>[]>;List of AWS regions that SignalFx should monitor.
property roleArn
roleArn?: pulumi.Input<string>;Role ARN that you add to an existing AWS integration object. Note: Ensure you use the arn property of your role, not the id!
property services
services?: pulumi.Input<pulumi.Input<string>[]>;List of AWS services that you want SignalFx to monitor. Each element is a string designating an AWS service. Conflicts with namespaceSyncRule. See the documentation for Creating Integrations for valida values.
property token
token?: pulumi.Input<string>;Used with signalfx_aws_token_integration. Use this property to specify the token.
property useGetMetricDataMethod
useGetMetricDataMethod?: pulumi.Input<boolean>;Enable the use of Amazon’s GetMetricData for collecting metrics. Note that this requires the inclusion of the "cloudwatch:GetMetricData" permission.
interface IntegrationState
interface IntegrationStateInput properties used for looking up and filtering Integration resources.
property customCloudwatchNamespaces
customCloudwatchNamespaces?: pulumi.Input<pulumi.Input<string>[]>;List of custom AWS CloudWatch namespaces to monitor. Custom namespaces contain custom metrics that you define in AWS; SignalFx imports the metrics so you can monitor them.
property customNamespaceSyncRules
customNamespaceSyncRules?: pulumi.Input<pulumi.Input<IntegrationCustomNamespaceSyncRule>[]>;Each element controls the data collected by SignalFx for the specified namespace. Conflicts with the customCloudwatchNamespaces property.
property enableAwsUsage
enableAwsUsage?: pulumi.Input<boolean>;Flag that controls how SignalFx imports usage metrics from AWS to use with AWS Cost Optimizer. If true, SignalFx imports the metrics.
property enabled
enabled?: pulumi.Input<boolean>;Whether the integration is enabled.
property externalId
externalId?: pulumi.Input<string>;The externalId property from one of a signalfx.aws.ExternalIntegration or signalfx.aws.TokenIntegration
property importCloudWatch
importCloudWatch?: pulumi.Input<boolean>;Flag that controls how SignalFx imports Cloud Watch metrics. If true, SignalFx imports Cloud Watch metrics from AWS.
property integrationId
integrationId?: pulumi.Input<string>;The id of one of a signalfx.aws.ExternalIntegration or signalfx.aws.TokenIntegration.
property key
key?: pulumi.Input<string>;If you specify authMethod = \"SecurityToken\" in your request to create an AWS integration object, use this property to specify the key.
property namespaceSyncRules
namespaceSyncRules?: pulumi.Input<pulumi.Input<IntegrationNamespaceSyncRule>[]>;Each element in the array is an object that contains an AWS namespace name and a filter that controls the data that SignalFx collects for the namespace. Conflicts with the services property. If you don’t specify either property, SignalFx syncs all data in all AWS namespaces.
property pollRate
pollRate?: pulumi.Input<number>;AWS poll rate (in seconds). One of 60 or 300.
property regions
regions?: pulumi.Input<pulumi.Input<string>[]>;List of AWS regions that SignalFx should monitor.
property roleArn
roleArn?: pulumi.Input<string>;Role ARN that you add to an existing AWS integration object. Note: Ensure you use the arn property of your role, not the id!
property services
services?: pulumi.Input<pulumi.Input<string>[]>;List of AWS services that you want SignalFx to monitor. Each element is a string designating an AWS service. Conflicts with namespaceSyncRule. See the documentation for Creating Integrations for valida values.
property token
token?: pulumi.Input<string>;Used with signalfx_aws_token_integration. Use this property to specify the token.
property useGetMetricDataMethod
useGetMetricDataMethod?: pulumi.Input<boolean>;Enable the use of Amazon’s GetMetricData for collecting metrics. Note that this requires the inclusion of the "cloudwatch:GetMetricData" permission.
interface TokenIntegrationArgs
interface TokenIntegrationArgsThe set of arguments for constructing a TokenIntegration resource.
property name
name?: pulumi.Input<string>;The name of this integration
property namedToken
namedToken?: pulumi.Input<string>;A named token to use for ingest
interface TokenIntegrationState
interface TokenIntegrationStateInput properties used for looking up and filtering TokenIntegration resources.
property name
name?: pulumi.Input<string>;The name of this integration
property namedToken
namedToken?: pulumi.Input<string>;A named token to use for ingest
property signalfxAwsAccount
signalfxAwsAccount?: pulumi.Input<string>;The AWS Account ARN to use with your policies/roles, provided by SignalFx.
property tokenId
tokenId?: pulumi.Input<string>;The SignalFx-generated AWS token to use with an AWS integration.