AWS Policy Permissions}>
+ Please verify that you have granted your AWS IAM user sufficient permissions. You can use the following policies for reference.
+
+ {!permissionsStatus.loading && permissionsStatus.data && (
+ <>
+
+
+
+ >
+ )}
+
+ );
+}
+
+const Header = styled.header`
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+`;
+
+const HeaderContent = styled.div`
+ flex-grow: 1;
+`;
+
+const Icon = styled.span`
+ transform: rotate(${props => (props.opened ? '90deg' : '0deg')});
+ transition: transform 150ms ease-in-out;
+`;
+
+const Policy = styled.pre`
+ overflow: hidden;
+ max-height: ${props => (props.opened ? '1000px' : '0')};
+ opacity: ${props => (props.opened ? '1' : '0')};
+ transition: max-height 150ms ease-in-out, opacity 150ms ease-in-out, margin 150ms ease-in-out, padding 150ms ease-in-out;
+ margin-bottom: ${props => (props.opened ? '12px' : '0')};
+ padding: ${props => (props.opened ? '9.5px' : '0')};
+`;
+
+const Title = styled.h4`
+ font-weight: bold;
+`;
+
+const Note = styled.p`
+ font-style: italic;
+`;
diff --git a/src/web/common/Routes.js b/src/web/common/Routes.js
index 620c3232daef5..987b3ee6b7aed 100644
--- a/src/web/common/Routes.js
+++ b/src/web/common/Routes.js
@@ -13,6 +13,7 @@ const Routes = {
const ApiRoutes = {
INTEGRATIONS: {
AWS: {
+ PERMISSIONS: '/plugins/org.graylog.integrations/aws/permissions',
REGIONS: '/plugins/org.graylog.integrations/aws/regions',
CLOUDWATCH: {
GROUPS: '/plugins/org.graylog.integrations/aws/cloudwatch/log_groups',
diff --git a/src/web/common/ValidatedInput.jsx b/src/web/common/ValidatedInput.jsx
index 0db71690e0b79..97f180a141405 100644
--- a/src/web/common/ValidatedInput.jsx
+++ b/src/web/common/ValidatedInput.jsx
@@ -40,9 +40,9 @@ const ValidatedInput = ({ help, onChange, id, label, fieldData, type, ...restPro
type={type}
onChange={handleChange}
onBlur={checkValidity}
- bsStyle={(error && dirty && 'error') || null}
- defaultValue={(type !== 'select' && value) || null}
- value={(type === 'select' && value) || null}
+ bsStyle={(error && dirty && 'error') || undefined}
+ defaultValue={(type !== 'select' && value) || undefined}
+ value={(type === 'select' && value) || undefined}
label={